feat: added two articles

This commit is contained in:
Nick 2024-12-17 02:17:06 -06:00
parent a751136971
commit 6cfdf6200e
166 changed files with 3507 additions and 237 deletions

View file

@ -170,6 +170,12 @@ cardImageMaker size1 size2 image urlLink =
|| urlLink
== Path.toString Path.Blog_Seedoils
|| urlLink
== Path.toString Path.Blog_Huntergatherers
|| urlLink
== Path.toString Path.Blog_Sapiendiet
|| urlLink
== Path.toString Path.Blog_Nagragoodrich
|| urlLink
== Path.toString Path.Interviews
|| urlLink
== Path.toString Path.Nutridex

View file

@ -26,3 +26,35 @@ wordCount text =
text
|> String.words
|> List.length
toTitleCase : String -> String
toTitleCase input =
let
lowercaseWords =
[ "a", "an", "the", "and", "but", "or", "for", "nor", "on", "at", "to", "in", "of", "with", "by" ]
words =
String.words input
capitalizeFirst word =
case String.uncons word of
Just ( first, rest ) ->
String.toUpper (String.fromChar first) ++ String.toLower rest
Nothing ->
""
capitalizeWord index word =
if index == 0 then
capitalizeFirst word
else if not (List.member (String.toLower word) lowercaseWords) then
capitalizeFirst word
else
String.toLower word
in
words
|> List.indexedMap capitalizeWord
|> String.join " "

184
frontend/src/Config/Helpers/Markdown.elm Normal file → Executable file
View file

@ -1,6 +1,7 @@
module Config.Helpers.Markdown exposing (..)
import Browser
import Config.Helpers.Converters exposing (toTitleCase)
import Config.Helpers.Format
exposing
( headerFontSizeBig
@ -56,24 +57,162 @@ articleImage pic =
renderDeviceMarkdown : String -> Element msg
renderDeviceMarkdown markdown =
case renderMarkdown markdown of
Ok renderedMarkdown ->
Ok ( toc, renderedMarkdown ) ->
column
[ width fill
, centerX
, spacing 10
]
renderedMarkdown
(tocView toc :: renderedMarkdown)
Err error ->
E.text error
renderMarkdown : String -> Result String (List (Element msg))
renderMarkdown : String -> Result String ( TableOfContents, List (Element msg) )
renderMarkdown markdown =
case
markdown
|> Markdown.Parser.parse
|> Result.mapError (\error -> error |> List.map Markdown.Parser.deadEndToString |> String.join "\n")
|> Result.andThen (Markdown.Renderer.render elmUiRenderer)
of
Ok okAst ->
case Markdown.Renderer.render elmUiRenderer okAst of
Ok rendered ->
Ok ( buildToc okAst, rendered )
Err errors ->
Err errors
Err error ->
Err (error |> List.map Markdown.Parser.deadEndToString |> String.join "\n")
tocView : TableOfContents -> Element msg
tocView toc =
column
[ alignTop
, width fill
, spacing 10
]
[ paragraph
[ F.bold
, F.size 23
, F.center
, width fill
, F.color colourTheme.textLightOrange
]
[ text "TABLE OF CONTENTS" ]
, column
[ E.spacing 3
, paragraphFontSize
, E.width fill
]
(toc
|> List.indexedMap
(\index headingBlock ->
row
[ E.width fill ]
[ el
[ E.alignTop
, width <| px 30
, F.bold
, alignRight
, alignBottom
]
(text (String.fromInt (index + 1) ++ "."))
, el
[ F.alignLeft
, E.width fill
, F.size 18
, alignTop
]
<|
newTabLink
[]
{ url = "#" ++ headingBlock.anchorId
, label =
el
[ F.color colourTheme.textLightOrange
, transitionStyleFast
, hoverFontDarkOrange
]
<|
text (toTitleCase headingBlock.name)
}
]
)
)
, el
[ width fill
, height fill
, spacing 20
, paddingEach
{ top = 0
, bottom = 0
, left = 100
, right = 100
}
]
<|
row
[ centerX
, D.widthEach
{ bottom = 1
, top = 0
, left = 0
, right = 0
}
, D.color colourTheme.textLightOrange
, paddingEach
{ top = 10
, bottom = 0
, left = 0
, right = 0
}
]
[]
, el
[]
<|
text ""
]
buildToc : List Block -> TableOfContents
buildToc blocks =
let
headings =
gatherHeadings blocks
in
headings
|> List.map Tuple.second
|> List.map
(\styledList ->
{ anchorId = styledList |> Block.extractInlineText |> rawTextToId
, name = styledToString styledList
, level = 1
}
)
styledToString : List Inline -> String
styledToString list =
list
|> Block.extractInlineText
gatherHeadings : List Block -> List ( Block.HeadingLevel, List Inline )
gatherHeadings blocks =
List.filterMap
(\block ->
case block of
Block.Heading level content ->
Just ( level, content )
_ ->
Nothing
)
blocks
elmUiRenderer : Markdown.Renderer.Renderer (Element msg)
@ -312,7 +451,31 @@ codeBlock details =
heading : { level : Block.HeadingLevel, rawText : String, children : List (Element msg) } -> Element msg
heading { level, rawText, children } =
E.paragraph
column [ width fill ]
[ el
[ width fill
, height fill
, spacing 20
, paddingEach
{ top = 10
, bottom = 20
, left = 100
, right = 100
}
]
<|
row
[ centerX
, D.widthEach
{ bottom = 1
, top = 0
, left = 0
, right = 0
}
, D.color colourTheme.textLightOrange
]
[]
, E.paragraph
[ F.size
(case level of
Block.H1 ->
@ -335,6 +498,7 @@ heading { level, rawText, children } =
(Html.Attributes.id (rawTextToId rawText))
]
children
]
rawTextToId rawText =
@ -344,3 +508,11 @@ rawTextToId rawText =
|> String.join "-"
|> Debug.log "joined"
|> String.toLower
-- Types
type alias TableOfContents =
List { anchorId : String, name : String, level : Int }

View file

@ -0,0 +1,46 @@
module Config.Helpers.References exposing (..)
import Config.Style.Colour exposing (colourTheme)
import Config.Style.Transitions
exposing
( hoverFontDarkOrange
, transitionStyleFast
)
import Element as E exposing (..)
import Element.Font as F
exposing
( alignLeft
, color
, regular
)
makeReference : References -> Int -> Element msg
makeReference references index =
paragraph
[ F.regular
, F.alignLeft
]
[ row []
[ newTabLink
[ F.bold
, F.color colourTheme.textLightOrange
, hoverFontDarkOrange
, transitionStyleFast
]
{ url = references.link, label = text (String.fromInt index ++ ". ") }
, text (references.author ++ ", ")
, text (references.title ++ ", ")
, text (references.journal ++ ", ")
, text references.year
]
]
type alias References =
{ author : String
, title : String
, link : String
, year : String
, journal : String
}

View file

@ -0,0 +1,245 @@
module Config.Pages.Blog.Records.HunterGatherers exposing (..)
import Config.Pages.Blog.Types exposing (..)
import Route.Path as Path
articleHunterGatherers : BlogArticle
articleHunterGatherers =
{ articleName = "Should Modern Humans Eat Like Hunter-Gatherers?"
, articleDescription = "This article presents a philosophical critique of the belief that a diet consisting solely of natural or ancestral foods is the best way for modern humans to achieve optimal health. I argue that even if a hunter-gatherer diet may be superior to a Western diet, it is still not necessarily the healthiest choice due to factors like the potential risks of ancestral foods and the ability to improve food quality through scientific manipulation."
, articleLink = Path.toString Path.Blog_Huntergatherers
, articleAuthor = "Nick Hiebert"
, isNewTabLink = False
, articleImage = "huntergatherers"
, articlePublished = "May 14, 2021"
, articleBody = """
Many Paleo diet advocates claim that hunter-gatherer diets optimally promote the long-term health of human beings. There are typically two primary justifications for this claim firstly, the fact that hunter-gatherer populations typically appear to be robustly healthy, and secondly, the fact that humans evolved eating these types of diets. While these are technically statements of fact, I find myself forced to take a page out of the Paleo-dieter's playbook, as I remind them that correlation doesn't equal causation. So, let's dig into why their reasoning is flawed.
Firstly, let me hit you with a thought experiment for a moment. Do you think that the elderly people within a given population would appear either more healthy or less healthy if that population _never_ had access to modern medical technology? Think about this for a moment. You may understandably intuit that their health would probably be worse, correct? But that probably isn't what would happen. They would probably appear healthier, and I'll explain why.
# SURVIVORSHIP BIAS
If a population never had access to modern medical technology, one of the things you couldn't reliably do is save sick or injured children. No matter what culture you observe, a sizable proportion of children will develop infectious illnesses. These illnesses, like bacterial or viral infections, are generally mundane by modern standards. However, without modern medicine many children who developed these types of illnesses would likely not survive them.
Those who are more prone to illness likely do not have the same chances of survival as those who are less prone to illness. As such, why wouldn't the elderly in this hypothetical population present with more robust health as a result? Without medical intervention, the environment is essentially selecting for the fittest possible individuals in our hypothetical population. This would likely generate the appearance of more robust health in the elderly. Consider this carefully for a moment. If you weed out all of the weaker people, of course the remaining population is going to appear stronger.
This presents a significant problem for Paleo diet advocates who choose to cite the robust health of hunter-gatherer populations as a justification for the Paleo diet, or as a justification for recommending the diet to others. Most Paleo-dieters do seem to be aware of the environmental adversity faced by hunter-gatherer populations. But they often don't seem to appreciate how this also produces significant challenges for their narrative.
For example, if you remind a Paleo-dieter that hunter-gatherers typically had an average life expectancy of around 30 years, they will often immediately retort by stating that those estimates are confounded by infant and child mortality. But therein lies the problem they can't have it both ways. A Paleo diet advocate cannot use that argument without tacitly admitting that infant and child mortality is typically enormously high among hunter-gatherer populations. Which it most certainly is [[1](https://www.sciencedirect.com/science/article/abs/pii/S1090513812001237)].
![][image1]
[image1]: /blog/huntergatherers/image1.png
Approximately 26.8% of infants and 48.8% of prepubescent children die in hunter-gatherer populations. With such a high proportion of children dying, how could it be the case that the apparent health of elderly hunter-gatherers is **not** coloured by this? Remember, hunter-gatherer populations likely appear healthier because the least resilient members of those populations are already dead. Paleo diet advocates cannot admit that hunter-gatherer populations had high rates of infant and child mortality without also admitting that the resulting population is a heavily biased sample.
This type of confounding is known as survivorship bias. Basically, survivorship bias is a type of selection bias that can occur when those who did not survive a selection event or process are overlooked in favour of those who did survive. For example, let's say we were trying to construct better body armour for soldiers to wear in combat. Perhaps we might conduct a study of the soldiers who returned from battle. We could collect bullet wound distribution pattern data to help ascertain where soldiers were most likely to get shot.
![][image2]
[image2]: /blog/huntergatherers/image2.png
However, as we see in the graphic above, this sort of analysis would exclude all those who were shot and did **not** survive. It would also overlook the sorts of bullet wound distribution patterns that tended to lead to death, which would actually have given us a significantly clearer picture of how we might construct better body armour.
Likewise, when Paleo diet advocates claim that we should eat like hunter-gatherers because hunter-gatherers are robustly healthy, they're not appreciating how survivorship bias is confounding their appraisal of hunter-gatherer health. They are essentially overlooking the other fifty percent of the hunter-gatherer population that didn't survive.
For this reason, it is dubious to use the apparent good health of hunter-gatherers as the basis for the assumption that their diets are appropriate for modern humans. Until Paleo diet advocates can figure out a way to explain why survivorship bias would not be confounding in an evaluation of hunter-gatherer health, they cannot rely on the apparent good health of hunter-gatherer populations to determine the applicability of hunter-gatherer diets to modern humans. In reality, the degree to which hunter-gatherer diets are appropriate for modern humans remains unclear.
But this isn't the only erroneous argument that Paleo-dieters will use to justify their claims. Often times Paleo diet advocates will also suggest that since we evolved eating certain foods, it is absurd to believe that any of the foods that we evolved eating could pose a long-term health risk to the average person. This reasoning has been used to dismiss robust and well-studied diet-disease relationships, such as saturated fat and cardiovascular disease, red meat and cancer, or even sodium and hypertension [[2](https://pubmed.ncbi.nlm.nih.gov/32428300/)][[3](https://pubmed.ncbi.nlm.nih.gov/28487287/)][[4](https://pubmed.ncbi.nlm.nih.gov/27216139/)][[5](https://pubmed.ncbi.nlm.nih.gov/28655835/)].
Right off the bat it is quite easy to identify that this is a blatant appeal to nature fallacy, and can be outright dismissed on that basis alone. However, it is important to describe precisely why this line of reasoning fails. What we really want to know is whether or not foods are necessarily beneficial (or neutral) for long-term health merely because we evolved eating them.
To explore this question, let's first briefly consider how Darwinian natural selection works. Essentially, it is the process by which random gene mutations are selected for by different environmental challenges. Some mutations are better at dealing with certain environmental challenges than other mutations. As a result, these more adaptive mutations increase an organism's chances of producing offspring. These organisms subsequently pass on these adaptive mutations to their offspring as well.
![][image3]
[image3]: /blog/huntergatherers/image3.png
In this image we see that black mice are less likely to get eaten by the bird than tan mice. For this reason, the random mutations that produces black mice rather than tan mice ends up being naturally selected for by the environment. However, environmental challenges like getting eaten aren't quite the same as environmental challenges that affect the long-term health of an organism.
# SELECTION SHADOW
Getting eaten when you're young is an acute event. Developing a life-threatening chronic disease in old-age, as a result of a life-long environmental exposure (like a food or nutrient), is a long, protracted event. It is unlikely that selection pressure applies to these two events symmetrically, because adaptations occur as a function of successful reproduction. As a result, the probability that _deleterious_ traits will be successfully selected against likely diminishes with age.
So, the question ends up being: how long after reproductive age does natural selection still robustly apply to human beings? Surely selection pressure doesn't end at reproductive age, because human children need human adults to raise them and care for them. But does selective pressure exist to a meaningful degree for those in the age ranges that typically associate with life-threatening chronic disease? Some scholars have attempted to estimate the force of natural selection as a function of age [[6](https://pubmed.ncbi.nlm.nih.gov/30124168/)].
![][image4]
[image4]: /blog/huntergatherers/image4.png
Applying the above graph to human beings, our best estimations suggest that the forces of natural selection rapidly wane down to nil shortly after sexual maturity, which would be approximately 16 to 17 years of age. Around the ages of 30 to 40 is when humans likely enter the "selection shadow", which is the zone wherein natural selection no longer robustly applies.
It seems highly unlikely that the fate of a population could ever hinge on the fitness of middle-aged people who are past their prime. For fun, let's estimate the age range wherein peak human performance is likely to occur. Perhaps we could look at the average age range of Olympic athletes [[7](https://venngage.com/blog/olympics/)].
![][image5]
[image5]: /blog/huntergatherers/image5.png
The average age range of Olympic athletes is between ~22.5 and ~25.5, which is well before the age range seen within the selection shadow. Which honestly makes sense if you think about it. As you age it becomes less likely that natural selection will select against deleterious traits, like losing athletic performance. Once inside the selection shadow, there is likely insufficient selective pressure to extend peak physical performance into higher and higher age ranges.
The selection shadow may actually be observable in some existing traditional populations as well, such as the Tsimané people of Bolivia. While they are technically hunter/forager-horticulturalists and not strictly hunter-gatherers, they are one of the only traditional populations for which we have decent data regarding the progression of chronic disease.
Using a measurement of atherosclerotic cardiovascular disease (ASCVD) progression known as coronary artery calcification (CAC) scoring, researchers were able to quantify the prevalence of ASCVD by age group among the Tsimané [[8](https://pubmed.ncbi.nlm.nih.gov/28320601/)].
![][image6]
[image6]: /blog/huntergatherers/image6.png
It should also be noted that CAC scores are indicative of advanced ASCVD [[9](https://pubmed.ncbi.nlm.nih.gov/24530667/)]. The exclusive use of CAC scoring in this study of the Tsimané leaves us with many interpretive challenges. For example, if CAC scores are representative of advanced ASCVD (so called "hard plaques"), what proportion of less advanced ASCVD (so-called "soft plaque") might have been overlooked? It is difficult to say for sure. But the bottom line is that the Tsimané experience increases in chronic disease at approximately the same time as modern populations well inside the selection shadow.
Granted, the prevalence of chronic disease in the Tsimané is overall lower than that of Western cultures. But, this could be expected given the fact that their diets and lifestyles are likely preferable to that of Western cultures as well. Not to mention the possible confounding due to survivorship bias, to which they are also not immune [[10](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3502712/)]. The Tsimané have infant mortality rates that are many fold higher than in Western cultures. This means that the Tsimané are vulnerable to the same type of confounding via survivorship bias that we discussed earlier, thus adding more layers of interpretive challenges.
The methods used to determine the age-ranges of the Tsimané were also questionable, and relied mostly on anecdote and personal judgement rather than objective measurements.
>_Birth years were assigned based on a combination of methods including using known ages from written records, relative age lists, dated events, photo comparisons of people with known ages, and cross-validation of information from independent interviews of kin._
When compared to more objective measures of age, the methods described above would appear to overestimate ages as the age of the subjects increases [[11](https://pubmed.ncbi.nlm.nih.gov/27511193/)]. Below the age of 40, estimates appear to be rather accurate. However, the age estimations used by Kaplan et al. (2017) would seem to overestimate ages by approximately 15 years above the age of 60. After adjusting for this, it is unlikely that CAC prevalence among the Tsimané differs significantly from Western populations. In fact, it might actually be higher.
# ANTAGONISTIC PLEIOTROPY
It is also imperative to mention that foods to which we are adapted might actually be more likely to be harmful for us as we age. This is because of a concept in evolutionary biology called antagonistic pleiotropy, which is the most widely accepted explanation for the evolutionary origin of aging [[12](https://pubmed.ncbi.nlm.nih.gov/31870250/)][[13](https://pubmed.ncbi.nlm.nih.gov/30524730/)]. The theory of antagonistic pleiotropy essentially posits some genetic adaptations can trade long-term health for short-term reproductive success. However, it can be inferred that most genetic adaptations are antagonistically pleiotropic.
Essentially, human DNA tends to degrade over time when it doesn't rightfully need to, as evidenced by the existence of biologically immortal organisms. Human DNA repair is also regulated and gene-specific. Given these facts, the interaction between gene degradation and gene repair is likely to be adaptive. This assigns every gene in our DNA that tends to degrade more with time a single antagonistically pleiotropic trait. Since most DNA in the human genome degrades over time, we can infer that over 50% of genes are antagonistically pleiotropic.
Since adaptations to foods are no more or less genetic than any other adaptations, we can infer that most adaptations to food are also likely to be antagonistic pleiotropic as well. From here we just infer that antagonistic pleiotropy applies more to ancestral foods than it does to novel foods. Which would suggest that the foods to which we are most strongly adapted would tend to be most antagonistically pleiotropic. This increases the likelihood that ancestral foods trade long-term fitness for short-term reproductive success.
For example, perhaps adaptations to sodium and saturated fat consumption, like regulated changes in blood pressure or lipoprotein secretion from the liver, may help to carry people to reproductive age without incident. However, those adaptations might actually increase the risk of poorer health later in life if those dietary exposures persist too long. This is why we cannot assume that natural diets are actually appropriate for maintaining the long-term health of modern humans. These adaptations to diet are likely to be antagonistic pleiotropic.
Without scientific evidence to help inform our attitudes toward the relative health value of novel foods, the health value of those foods remains is a black box. Due to the principle of indifference, we have no particular reason to suspect that truly novel foods will be either beneficial or detrimental. However, if it can be demonstrated that both an ancestral food and a novel food have the same thriving potential during the reproductive years, we can actually infer that the novel food is to be favoured.
Novel foods do not belong to the domain of foods that have the potential to be antagonistic pleiotropic, since we did not evolve consuming them. Conversely, the ancestral food in our scenario is likely to be antagonistically pleiotropic. Thus, the novel food is to be favoured over the ancestral food in this case. This concept can be illustrated clearly with a couple of simple tables.
![][image7]
[image7]: /blog/huntergatherers/image7.png
To summarize, we can infer that ancestral foods are likely to have both positive short-term health value, as well as negative long-term health value. However, in the absence of empirical data, our doxastic attitude toward the health value of novel foods should be one of agnosticism. When the thriving potential of novel foods and ancestral foods show non-inferiority, we infer that the novel foods is less likely to be detrimental for long-term health. Altogether, the argument can be summarized like this:
![][argument1]
[argument1]: /blog/huntergatherers/argument1.png
Essentially, once you equalize advantages across a given novel food and a given ancestral food, the inherent disadvantages of antagonistic pleiotropy would leave us favouring the novel food over the ancestral food for long-term health. From here we can infer a priori that a diet that maximizes benefits and minimizes risks for the most amount of people is likely to be a diet that is on some level unnatural or non-ancestral. It is also important to discuss what this position is **not** arguing. It is **not** being argued that every novel food is going to be superior to every ancestral food, and it is **not** being argued that all ancestral foods are bad.
As an aside, one might point out that while ancestral foods like meat seem to increase the risk of many diseases, while other ancestral foods like fruit seem to decrease the risk of many diseases. So what gives? My arguments apply equally to fruit, and adaptations of fruit are also likely to be antagonistically pleiotropic. However, it is likely the case that the antagonistically pleiotropic pathways that are influenced by foods like fruit are less impactful than those influenced by foods like meat.
Diet is about substitutions. Replacing meat with fruit lowers risk, but that doesn't mean that fruit is without long-term harms or risks as well. Bearing this in mind, I posit that if we truly want to maximize the thriving potential of food, we must engineer our own food. Assuming that no diet of natural foods will actually lower risk to zero, if we wanted to improve the health value of food even more, how would we accomplish this without artificially manipulating those foods? In fact, we have evidence that the health value of natural foods can be improved, with examples like Golden rice.
# OPTIMAL DIETS
Lastly, it has also been suggested by some Paleo diet advocates that certain hunter-gatherer migrant studies provide us with a justification for why hunter-gatherer diets are appropriate for modern humans. This is due to the fact that these studies demonstrate that when certain hunter-gatherer populations transition from their traditional diets to more Westernized diets, they experience increases in chronic disease risk [[14](https://pubmed.ncbi.nlm.nih.gov/6937778/)][[15](https://pubmed.ncbi.nlm.nih.gov/7462380/)]. However, this is ultimately irrelevant to my point.
The fact that Western diets increase disease risk relative to certain hunter-gatherer diets does not actually lend any credibility to the notion that modern humans can achieve robust health that is equal to that of hunter-gatherers merely by emulating their diets. Perhaps the Western diet is so bad that it would negatively impact the health of any human population who ate it over the long-term. But, it could also be the case that hunter-gatherer diets are still inappropriate for modern humans in many ways ways that may not be obvious for the reasons I've discussed throughout this article. These are not incompatible concepts.
The most I would have to grant is that a hunter-gatherer diet is likely an improvement over a Western diet. But that is a far cry from ascertaining that a hunter-gatherer diet is optimal for the long-term health of modern humans. This is just a gross overextrapolation from altogether irrelevant data.
The last inference is the icing on the cake, and a bit more convoluted, but it is necessary to argue it to an ancestral diet advocate. This is next argument cuts to the core of their epistemology regarding ancestral diets and health. All we need to do is prime the ancestral diet advocate for the inference by asking them if they identify as "**F**" (as defined below). If they do, then we proceed. If they don't, then their motivations for advocating for ancestral diets diets isn't clear at all.
![][argument2]
[argument2]: /blog/huntergatherers/argument2.png
Essentially, if our interlocutor identifies as "**F**", then all we need to do is demonstrate to them that "**N**" exists, and we're essentially home free. If they accept that "**N**" exists and they also identify as "**F**", then they should be in favour of substituting such a novel food for such an ancestral food. If they don't, then they have a contradiction. This is where the ancestral diet advocate could face quite a dilemma.
However, there is a way around this for them, but it's absurd. They can simply reject the evidence for "**N**" existing. Which would be a hilarious move for them to make, but they can make it if they want. However, implicit in this move is the rejection of all evidence that supports "**N**" existing, regardless of the quality.
For example, if they maintain that animal fat consumption is more supportive of health than vegetable fat consumption, they'd need to reject the multiple meta-analyses and meta-regression analyses of randomized controlled trials on the subject, as well as the consistency of effect in seen in high internal validity epidemiology. The implications of taking such a position are hilarious, because they could very easily have to also reject many other diet/lifestyle-disease relationships that they likely take for granted on much weaker evidence. Such as exercise and alcohol consumption affecting cardiovascular disease risk.
It is likely that the vaunted "optimal human diet", which is to say a diet that maximizes long-term health for the greatest number of people, has actually yet to be discovered. Ultimately, to answer the question of what foods are healthy, we need science. We need robust outcome data on modern human beings, not speculation and appeal to nature fallacies. We need this science to teach us how to eat.
# UPDATE
Chris Masterjohn has apparently written a [lengthy response](https://chrismasterjohnphd.substack.com/p/ancestral-health-vs-antagonistic) to my position on antagonistic pleiotropy and how it relates to the long-term health value of ancestral foods. Many have asked me to rebut the article, but it's not clear to me why I should. He's not interacting with the argument at all. Let me give you an example to help illustrate my feelings in this matter. If I give someone an argument, and their response is to turn around and scream at a wall, should I feel any sort of drive to "rebut" the screaming? I don't think so.
Constructing a lengthy reply to Masterjohn's article would only serve to give readers the impression that he actually said anything of substance against my position, which he hasn't. When someone tells me that they disagree with an argument that I have presented, I take this to mean one of two things. Either they have an argument of their own that forms a conclusion that is the negation of at least one of my premises, or they give at least one of my premises such low credence that they just deny that it's true. Masterjohn didn't do either in his article.
Masterjohn just spends the article giving low credence to concepts that aren't even entailed from the argument itself, so why should I care? It's doubly hilarious to expect me to rebut his article when he actually signed off on the entailments of my position at least twice in our [debate](https://chrismasterjohnphd.substack.com/p/the-ancestral-health-debate) when he was actually interacting with the argument itself and not going off on tangents. Once at [58:26](https://youtu.be/n1I5xgvERbo?t=3506) and again at [1:39:16](https://youtu.be/n1I5xgvERbo?t=5956). Not sure what more there is to comment on here.
Thank you for reading! If you like what you've read and want help me create more content like this, consider pledging your [Support](https://www.uprootnutrition.com/donate). Every little bit helps! I hope you found the content interesting!
# BIBLIOGRAPHY"""
, articleReferences =
[ { author = "Anthony A. Volka and Jeremy A. Atkinson"
, title = "Infant and child death in the human environment of evolutionary adaptation"
, journal = "Evolution and Human Behavior"
, year = "2013"
, link = "https://www.sciencedirect.com/science/article/abs/pii/S1090513812001237"
}
, { author = "Lee Hooper, et al."
, title = "Reduction in saturated fat intake for cardiovascular disease"
, journal = "Cochrane Database Syst Rev"
, year = "2020"
, link = "https://pubmed.ncbi.nlm.nih.gov/32428300/"
}
, { author = "Arash Etemadi, et al."
, title = "Mortality from different causes associated with meat, heme iron, nitrates, and nitrites in the NIH-AARP Diet and Health Study: population based cohort study"
, journal = "BMJ"
, year = "2017"
, link = "https://pubmed.ncbi.nlm.nih.gov/28487287/"
}
, { author = "Andrew Mente, et al."
, title = "Associations of urinary sodium excretion with cardiovascular events in individuals with and without hypertension: a pooled analysis of data from four studies"
, journal = "Lancet"
, year = "2016"
, link = "https://pubmed.ncbi.nlm.nih.gov/27216139/"
}
, { author = "Rik H G Olde Engberink, et al."
, title = "Use of a Single Baseline Versus Multiyear 24-Hour Urine Collection for Estimation of Long-Term Sodium Intake and Associated Cardiovascular and Renal Risk"
, journal = "Circulation"
, year = "2017"
, link = "https://pubmed.ncbi.nlm.nih.gov/28655835/"
}
, { author = "Thomas Flatt and Linda Partridge"
, title = "Horizons in the evolution of aging"
, journal = "BMC Biol"
, year = "2018"
, link = "https://pubmed.ncbi.nlm.nih.gov/30124168/"
}
, { author = "Ryan McCready"
, title = "For Olympic Athletes, Is 30 the New 20?"
, journal = ""
, year = "2016"
, link = "https://venngage.com/blog/olympics/"
}
, { author = "Hillard Kaplan, et al."
, title = "Coronary atherosclerosis in indigenous South American Tsimane: a cross-sectional cohort study"
, journal = "Lancet"
, year = "2017"
, link = "https://www.thelancet.com/journals/lancet/article/PIIS0140-6736(17)30752-3/fulltext"
}
, { author = "Mahesh V Madhavan, et al."
, title = "Coronary artery calcification: pathogenesis and prognostic implications"
, journal = "J Am Coll Cardiol"
, year = "2014"
, link = "https://pubmed.ncbi.nlm.nih.gov/24530667/"
}
, { author = "Michael Gurven"
, title = "Infant and fetal mortality among a high fertility and mortality population in the Bolivian Amazon"
, journal = "Soc Sci Med"
, year = "2012"
, link = "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3502712/"
}
, { author = "Horvath et al."
, title = "An epigenetic clock analysis of race/ethnicity, sex, and coronary heart disease"
, journal = "Genome Biol"
, year = "2016"
, link = "https://pubmed.ncbi.nlm.nih.gov/27511193/"
}
, { author = "J Mitteldorf"
, title = "What Is Antagonistic Pleiotropy?"
, journal = "Biochemistry (Mosc)"
, year = "2019"
, link = "https://pubmed.ncbi.nlm.nih.gov/31870250/"
}
, { author = "He and Zhang"
, title = "Toward a molecular understanding of pleiotropy"
, journal = "Genetics"
, year = "2006"
, link = "https://pubmed.ncbi.nlm.nih.gov/16702416/"
}
, { author = "J M Stanhope and I A Prior"
, title = "The Tokelau island migrant study: prevalence and incidence of diabetes mellitus"
, journal = "N Z Med J"
, year = "1980"
, link = "https://pubmed.ncbi.nlm.nih.gov/6937778/"
}
, { author = "J M Stanhope and I A Prior"
, title = "The Tokelau Island Migrant Study: serum lipid concentration in two environments"
, journal = "J Chronic Dis"
, year = "1981"
, link = "https://pubmed.ncbi.nlm.nih.gov/7462380/"
}
]
}

View file

@ -0,0 +1,331 @@
module Config.Pages.Blog.Records.NagraGoodrich exposing (..)
import Config.Pages.Blog.Types exposing (..)
import Route.Path as Path
articleNagraGoodrich : BlogArticle
articleNagraGoodrich =
{ articleName = "Grading Tucker Goodrich: A Lesson in Debate Etiquette"
, articleDescription = ""
, articleLink = Path.toString Path.Blog_Nagragoodrich
, articleAuthor = "Nick Hiebert"
, isNewTabLink = False
, articleImage = "nagragoodrich"
, articlePublished = "May 12, 2022"
, articleBody = """
Back in August of 2021, I invited [Tucker Goodrich](https://twitter.com/TuckerGoodrich) to a debate about the health value of seed oils. Tucker agreed to participate immediately, but after a brief back-and-forth (which resulted in Tucker [contradicting himself](https://twitter.com/The_Nutrivore/status/1428064287059324929?s=20&t=rmYpT72-5Tan31MnU_ptlw)), he eventually [withdrew](https://twitter.com/TuckerGoodrich/status/1428062578668830720?s=20&t=rmYpT72-5Tan31MnU_ptlw) without an explicit justification. Shortly thereafter he wrote a [blog article](https://yelling-stop.blogspot.com/2021/12/thoughts-on-nick-hieberts-comprehensive.html), wherein he paints a caricature of the events that transpired, which included everything from exaggerations to full-throated lies. Despite this, I reinvited him to debate multiple times since the incident, with either no response or outright refusals in reply.
My initial invitation was prompted by my discovery that Tucker was actually just straight up [fabricating evidence](https://twitter.com/The_Nutrivore/status/1489863311155810304?s=20&t=DhYUMrwmqG260Ft7uNHozg) in a debate with a friend of mine, [Alan Flanagan](https://www.alineanutrition.com/about/). Needless to say, Tucker appears to be a particularly dishonest actor and a coward. When he wants to engage with me he does so in the safety of his blog, and critiques my writings and public statements with strawman arguments and red herrings, as well as just attacking very low-hanging fruit. At this point I don't think it's unfair to speculate that he conducts himself in this manner because he knows his arguments would not withstand scrutiny in a debate against me.
Recently I was invited to set the record straight and shed some light on some of Tucker's more misleading claims on [Mark Bell's Power Project](https://www.youtube.com/watch?v=omzCi2CGoxo). Naturally Tucker felt compelled to write [a response](http://yelling-stop.blogspot.com/2022/02/thoughts-on-nick-hiebert-on-mark-bells.html) that was also particularly low-level and ultimately did not provide any stable defeaters for any of my positions. That didn't stop him from writing the article as though my arguments had been thoroughly dispatched, despite his counterarguments not even meaningfully interacting with what I had said to begin with.
At this point I figured that enough was enough. So, I contacted an acquaintance of mine (who through this whole ordeal would become a friend), [Matthew Nagra](https://drmatthewnagra.com). I knew Matt was experienced in empirical debate and didn't hold any whacky heterodox views about seed oils, so I asked him if he'd be interested in debating Tucker. Matt agreed and promptly extended an invitation to Tucker. After Tucker agreed to a debate against Matt on [Simon Hill](https://twitter.com/theproof)'s [podcast](https://theproof.com/podcast/), it was time to get to work. With some help from [Matthew Madore](https://twitter.com/MattMadore576) over at [My Nutrition Science](https://www.mynutritionscience.com/authors-page/), we developed about 200 pages worth of debate-prep, syllogisms, and dialogue trees over approximately six weeks.
As you will see throughout this article, our hard work paid off in the sweetest way possible. Matt was able to tease an absolutely enormous amount of dodges, strawman arguments, and straight up contradictions out of Tucker. It was more than any of us could have hoped for, and it truly reveals just how weak Tucker's arguments really are. The number of self-defeating bullets Tucker tried to bite in order to stay ahead in the debate was exquisite a true treat. All in all, I'm very pleased with the results. Matt did a truly phenomenal job. Enjoy!
# DEBATE
Let's start. Tucker and Matt both agree to the following:
**Debate Rules:**
1) The debate will be open and conversation-style.
2) Both parties will avoid talking over one another.
3) Both parties must answer questions directly.
4) Both parties will make and address one claim at a time.
5) Both parties will refrain from using personal insults.
6) Both parties will provide adequate time for response.
**Matt's Debate Proposition:**
>_It is more reasonable to believe that seed oils are beneficial, rather than harmful, for coronary heart disease risk._
**Tucker's Definition of Seed Oils:**
>_Oils made from seeds, like canola oil, soybean oil, sunflower oil, etc. Not the fleshy part of the fruit, like olive oil, palm oil, avocado oil, or coconut oil. With the primary focus being high linoleic acid oils._
# NUTRITIONAL EPIDEMIOLOGY
**Rule violation (**[**30:20**](https://youtu.be/5nZSV-DyVRM?t=1820)**,** [**30:38**](https://youtu.be/5nZSV-DyVRM?t=1838)**):**
Tucker breaks rule three twice. Matt provides evidence from three independent analyses that shows a concordance rate of 65-67% between nutritional epidemiology and nutritional randomized controlled trials (RCTs). Matt then asks Tucker if nutritional epidemiological evidence is concordant with nutritional RCTs two thirds of the time, which is a yes or no question. Tucker responds by saying its irrelevant due to being a tangent. However, it's not clear exactly how Matt's question is an irrelevant tangent, since it directly interacts with Tucker's opening claim at the beginning of the debate.
**Strawman (**[**32:09**](https://youtu.be/5nZSV-DyVRM?t=1929)**):**
Tucker finally answers "no" in response to Matt's question. When Matt asks why not, Tucker responds by saying "it's just a meta-analysis", which doesn't provide us with any clarity on why he provided the answer that he did. Tucker further elaborates with a strawman of Matt's position, stating that the data provided by Matt doesn't provide us with any information about the likelihood of a high-LA intervention being beneficial. However, this wasn't Matt's point. Matt's point was that Tucker's characterization of nutritional epidemiology on the whole was a red herring and false.
# MINNESOTA CORONARY EXPERIMENT
**Rule violation (**[**37:24**](https://youtu.be/5nZSV-DyVRM?t=2239)**):**
Tucker breaks rule three for the third time. Matt shows Tucker the power calculation from MCE, and demonstrates that the trial was actually underpowered. Matt then asks Tucker if the trial had adequate power. Tucker again says that the question is irrelevant, stating that when a trial shows harm, it shouldn't be discounted based on a P-value. This is a truly bizarre answer, as Matt has yet to discount the trial.
**Rule violation (**[**38:50**](https://youtu.be/5nZSV-DyVRM?t=2330)**):**
Tucker breaks rule four. Instead of resolving Matt's point about MCE, Tucker wants to pivot to the LA Veterans Administration Hospital Trial (LAVAT).
**Rule violation (**[**43:20**](https://youtu.be/5nZSV-DyVRM?t=2600)**):**
Tucker breaks rule three for the fourth time. Matt presents a subgroup analysis from MCE that shows that older subjects who maintained the intervention diet for more one year tended to see a benefit when compared to the control diet. Matt asks Tucker if the older subjects in MCE who were consuming the intervention diet for longer saw a benefit compared to the control diet. Tucker rejects the question, saying that Matt is citing a "sub-population" analysis, and that it is superseded by the total outcome. This answer doesn't interact with Matt's question.
**Rule violation (**[**42:56**](https://youtu.be/5nZSV-DyVRM?t=2576)**,** [**43:30**](https://youtu.be/5nZSV-DyVRM?t=2610)**):**
Tucker breaks rule three for the fifth time. Matt rephrases his question, asking Tucker if harm would be more likely if subjects were to maintain the intervention diet for a longer period of time as opposed to a shorter period of time in MCE. Tucker again, dismisses a yes-or-no question as being irrelevant without any clarifying explanation.
**Rule violation (**[**44:06**](https://youtu.be/5nZSV-DyVRM?t=2646)**):**
Tucker breaks rule two. Matt wants to elaborate on why his question is important, but Tucker cuts him off. Matt allows it, but Tucker shouldn't have done it to begin with.
**Rule violation (**[**48:18**](https://youtu.be/5nZSV-DyVRM?t=2898)**):**
Tucker breaks rule one and three. Tucker attempts an explanation for why MCE showed benefit for older subjects over two years. When Matt asks for further clarification, Tucker refuses to provide it. Not only is this directly dodging a question, this behaviour also calls into question whether or not Tucker is actually there for an open, conversation-style debate.
**Rule violation (**[**49:07**](https://youtu.be/5nZSV-DyVRM?t=2947)**):**
Tucker breaks rule four again. Instead of resolving Matt's point about MCE, Tucker wants to pivot to the Oslo Diet-Heart Study (ODHS).
**Strawman (**[**50:34**](https://youtu.be/5nZSV-DyVRM?t=3034)**):**
Tucker offers a strawman of Matt's position, claiming that Matt's conclusions were based on ODHS. In fact, Matt's position was not based on ODHS, and Matt even said that the evidence underpinning his position is virtually the same if ODHS is omitted completely.
**Strawman (**[**51:52**](https://youtu.be/oYsRgsJoZc4?t=3112)**):**
Tucker offers a strawman of Matt's position, claiming that the composition of fats in margarines would need to be known in order to conclude that trans-fats (TFA) were confounding in MCE. This isn't Matt's position. Matt's position was that TFA confounding is likely based on two pieces of evidence. Firstly, the vast majority of margarines during that time period contained TFA. Secondly, there was disagreement between the observed cholesterol changes and the predicted cholesterol changes in MCE. From these data Matt infers that TFA confounding was likely, which is merely a truism that can be soundly inferred a priori. Matt doesn't conclude that TFA confounding did in fact occur. He merely takes the position that is likely.
**Rule violation (**[**55:27**](https://youtu.be/oYsRgsJoZc4?t=3327)**):**
Tucker breaks rule three. Matt asks Tucker if he thinks that a cooking oil with 1% TFA would be equivalent to a cooking oil with 15% TFA, which is a yes or no question. Tucker responds by saying that TFA confounding would have to be a systematic issue across all of the RCTs using Matt's assumptions. However, this doesn't interact with Matt's question.
**Rule violation (**[**1:02:00**](https://youtu.be/oYsRgsJoZc4?t=3720)**):**
Tucker breakers rule three again. Tucker cites a result from the LAVAT that is incongruent with Matt's figures, so Matt asks him what Tucker's figure is representing. After Matt finishes explaining the incongruency, he asks Tucker where he is getting the number from. Instead of answering, Tucker just asks him what his point is.
**Potential contradiction (**[**1:08:00**](https://youtu.be/oYsRgsJoZc4?t=4080)**):**
Tucker concedes that LAVAT showed a slight benefit for vegetable oils compared to animal fats. However, earlier he characterized MCE as showing "harm", but it wasn't qualified as slight. However, LAVAT showed a statistically significant 49% increase in CVD mortality risk in the control group, but MCE showed a non-significant 24% increase in CVD mortality risk in the intervention group. If a non-significant 24% increase in CVD mortality is noteworthy in Tucker's view, why is a statistically significant 49% increase in CVD mortality risk only slight in his view as well?
Without further elaboration, would have to either accept that the increase in CVD mortality in LAVAT is noteworthy, or accept that the CVD mortality increase in MCE is at least just as unnoteworthy as LAVAT, if he wishes to stay consistent. We can syllogize the logical entailments of accepting the CVD mortality risk in MCE as "not slight" like this:
![][argument1]
[argument1]: /blog/nagragoodrich/argument1.png
# LA VETERANS ADMINISTRATION HOSPITAL STUDY
**Rule violation (**[**1:08:22**](https://youtu.be/oYsRgsJoZc4?t=4102)**,** [**1:08:34**](https://youtu.be/oYsRgsJoZc4?t=4114)**):**
Tucker breaks rule three two more times. Matt presented data from LAVAT that divulged that the intervention diet resulted in statistically significant benefits to CVD mortality and all-cause mortality. Matt asked Tucker if he though the data shows that the intervention diet in LAVAT resulted in a benefit to CVD mortality and all-cause mortality, which is again a yes or no question. First, Tucker dismisses the question, saying that LAVAT also saw an increase in cancer. When Matt asks again, Tucker says that he doesn't agree that studies can be "sliced and diced", which doesn't interact with Matt's question.
**Rule violation (**[**1:10:44**](https://youtu.be/oYsRgsJoZc4?t=4244)**,** [**1:14:22**](https://youtu.be/oYsRgsJoZc4?t=4462)**):**
Tucker breaks rule four two more times. Instead of resolving Matt's point about LAVAT, Tucker tries to pivot to talking about the standard American diet (SAD), which is tangential to the claim being discussed at that moment. When asked again, Tucker responds by talking about rates of acute myocardial infarction (AMI) in Africans, which is also tangential to the claim being discussed at that moment.
**Rule violation (**[**1:18:03**](https://youtu.be/QGNNsiINehI?t=4683)**):**
Tucker breaks rule three yet again. Matt attempts an internal critique by asking if Tucker would believe that adding vegetable oils to the SAD would be a benefit, based on the results of LAVAT. Tucker replies by saying that Lee Hooper would conclude that there is little to no benefit. A truly bizarre reply that doesn't interact with Matt's question at all.
**Potential contradiction (**[**1:21:11**](https://youtu.be/QGNNsiINehI?t=4871)**):**
Matt responds to ecological data that Tucker presented earlier, stating that he disagrees with the notion that it can be used to determine independent effects of seed oils. Tucker denies that he is making such a claim, and clarifies that he is speculating off that data. However, earlier in the debate Tucker objected to Matt's speculation regarding TFA confounding in MCE. Why is it OK for Tucker to submit speculation as evidence but not OK for Matt to submit speculation as evidence?
Without further elaboration, it's unclear why Tucker would not be OK with a priori inferences about the potentially confounding effects of TFA in MCE being used in debate, when he also relies on such a priori inferences. Such as when he infers from ecological data that seed oils are likely to be detrimental. We can syllogize the logical entailments of accepting the use of a priori inferences in debate like this:
![][argument2]
[argument2]: /blog/nagragoodrich/argument2.png
# LYON DIET-HEART STUDY
**Rule violation (**[**1:32:15**](https://youtu.be/QGNNsiINehI?t=5535)**):**
Tucker breaks rule four once more. At this point, both are discussing Lyon Diet-Heart Study (LDHS), and the differential effects of the various dietary modifications that were made in that study, such as the reduction in LA. Matt takes the position that it is unlikely the the 73% reduction in AMI risk seen in LDHS is attributable to LA-reduction due to many other dietary variables changing alongside the reduction in LA. Tucker takes the position that reduction in LA explains the majority of the effect. Instead of resolving Matt's point about LDHS, Tucker wants to pivot to discussing the mechanisms of atherosclerosis.
**Potential contradiction (**[**1:35:45**](https://youtu.be/QGNNsiINehI?t=5745)**):**
Tucker holds the view that alpha-linolenic acid reduces risk, but he also holds the view that risk is mediated solely by LA-specific metabolites. However, this is true of all non-LA fatty acids. If the metabolites that confer harm are LA-specific, then shouldn't all non-LA fatty acids be equally non-atherogenic? He tries to reconcile this by saying that ALA "blocks" the negative effects of LA. Does that mean that ALA is an antioxidant? Does the mean that ALA detoxifies LA-specific metabolites somehow? He offers no further explanation.
**Rule violation (**[**1:47:53**](https://youtu.be/QGNNsiINehI?t=6473)**):**
Tucker breaks both rule two and rule six. In response to an objection from Tucker, Matt wanted to ask a question so that he could have specific clarity on Tucker's position, but Tucker cut Matt off before Matt could ask.
# LOW DENSITY LIPOPROTEINS
**Potential contradiction (**[**1:39:20**](https://youtu.be/QGNNsiINehI?t=5960)**):**
Matt uses one of Tucker's references to present an internal critique. The reference appears to contradict Tucker's model of CVD by stating that hyperlipidemia is sufficient to explain the development of CVD in all its manifestations. Tucker objects to this, saying that the paper is referring to the "genetic hypothesis" of CVD, which involves CVD risk being conferred via genetically mediated concentrations of LDL. Tucker elaborates by stating that if the hypothesis were true, there wouldn't be observable differences in CVD rates between people with the same genetic background between different environments. This appears to be discounting the possibility that LDL can vary between individuals within a genetically homogenous group. Yet, here he affirms that environmental factors like dietary modification can affect LDL levels.
**Strawman (**[**1:49:00**](https://youtu.be/QGNNsiINehI?t=6540)**):**
Matt claims that oxidation of LDL is virtually inevitable after LDL are irreversibly retained within the subendothelial space. Tucker objects, saying it is not inevitable. Matt asks for clarification, requesting evidence that oxidation can be abolished in the subendothelial space. Tucker informs Matt that the fat composition of the diet can influence LDL oxidation rates. After Matt tells Tucker that this isn't what he's asking about, Tucker insists that this is indeed what Matt is asking about, without any further explanation.
**Potential contradiction (**[**1:53:46**](https://youtu.be/QGNNsiINehI?t=6826)**):**
Tucker correctly states that the LA-derived metabolite, malondialdehyde (MDA), is responsible for oxidative modification of LDL particles. However, he also states that ALA can produce this metabolite as well. If Tucker's position is that MDA-mediated oxidative modification of LDL particles initiates CVD, then why would it matter if an intervention involves both LA and ALA? At **58:32**, Tucker states that the inclusion of ALA confounded LAVAT.
If Tucker wants to remain consistent, he'll have to explain why the atherogenic properties of ALA that are entailed from his stated position don't seem to matter. He seems to singling out LA based on characteristics that he admits are shared by ALA. Without further elaboration, Tucker should have to accept ALA as atherogenic, and the reasoning can be syllogized like this:
![][argument3]
[argument3]: /blog/nagragoodrich/argument3.png
**Direct contradiction (2:18:19):**
Tucker directly contradicts himself when he suggests that corn oil is not a seed oil. At **1:43:50**, he cited two primary interventions that demonstrate that seed oils produce harm, but the sole oil used in those trials was corn oil.
![][argument4]
[argument4]: /blog/nagragoodrich/argument4.png
# TUCKER CONCEDES
**Potential contradiction (**[**2:09:08**](https://youtu.be/QGNNsiINehI?t=7748)**):**
Tucker again concedes that LAVAT showed a "fairly small" benefit of vegetable oils compared to animal fats. Earlier in the debate, Tucker stated that other trials such as MCE as showed "harm". However, LAVAT showed a statistically significant 49% increase in CVD mortality risk in the control group, but MCE showed a non-significant 24% increase in CVD mortality risk in the intervention group. If a non-significant 24% increase in CVD mortality is noteworthy in Tucker's view, why is a statistically significant 49% increase in CVD mortality risk only "fairly small" in Tucker's view as well?
**Rule violation (**[**2:10:08**](https://youtu.be/QGNNsiINehI?t=7808)**,** [**2:10:41**](https://youtu.be/QGNNsiINehI?t=7841)**):**
Tucker breaks rule three another three times. After Tucker implies that the benefits seen in LAVAT are inconsequential, Matt once again presents the findings of LAVAT. Matt asks Tucker if he believes that a 33% reduction to all-cause mortality and a 35% reduction to CVD mortality is "small", which is a yes or no question. Rather than answering, Tucker starts talking about Christopher Ramsden's meta-analysis. When Matt asks again, Tucker continues talking about the Ramsden meta-analysis.
**Rule violation (**[**2:10:52**](https://youtu.be/QGNNsiINehI?t=7852)**):**
Tucker breaks rule one again. Matt attempts to explain what his question for Tucker is, but Tucker mind-reads and tries to tell Matt what he means instead of listening.
**Direct contradiction (**[**2:10:59**](https://youtu.be/QGNNsiINehI?t=7859)**):**
Tucker objects to Matt's use of LAVAT to demonstrate a potential benefit of seed oils, saying that "you can't take one single RCT and prove an effect". However, this is the exact manner in which Tucker relies on LDHS to demonstrate the benefits of LA reduction in the context of high ALA. There is no other study that included such an intervention.
Without additional clarification, Tucker would need to reject his own reliance on LDHS to prove the effect of LA-reduction in the context of an ALA-rich diet. Such an entailment can be syllogized like this:
![][argument5]
[argument5]: /blog/nagragoodrich/argument5.png
**Rule violation (**[**2:13:03**](https://youtu.be/QGNNsiINehI?t=7983)**):**
In an astonishing feat, Tucker breaks rules two, four, five, and six all at the same time. Rather than engaging with Matt's question about the clinical significance of the LAVAT results, Tucker dodges by attacking Matt's intellectual integrity. When Matt attempts to interject, Tucker cuts Matt off, attempting to pivot to discussing meta-analyses despite agreeing to systematically discuss the relevant trials one by one.
**Strawman (**[**2:14:21**](https://youtu.be/QGNNsiINehI?t=8061)**):**
Tucker finishes his rant by suggesting that the LAVAT results don't show that increasing seed oils can "reduce heart disease by 30%", which was not at all what Matt was suggesting. All Matt asked Tucker was whether or not Tucker believed that the effects observed in LAVAT were small.
**Strawman (**[**2:14:33**](https://youtu.be/QGNNsiINehI?t=8073)**):**
Tucker claims that Matt agreed that you cannot "prove" something based on one study, and in fact meta-analysis is required for proof. Matt never committed himself to such a concept for causal inference. This is a truly bizarre move on Tucker's part.
# HOOPER 2020 META-ANALYSIS
**Rule violation (**[**2:16:32**](https://youtu.be/QGNNsiINehI?t=8192)**):**
Tucker breaks rules two and six again. Now discussing the paper by Hooper et al. (2020), Tucker asks Matt where in the paper can the evidence for his claims be found. Matt attempts to respond, but Tucker cuts Matt off again by asking the exact same question he just asked, but with a slightly more crazed inflection.
**Rule violation (**[**2:19:30**](https://youtu.be/QGNNsiINehI?t=8370)**,** [**2:19:38**](https://youtu.be/QGNNsiINehI?t=8378)**,** [**2:19:45**](https://youtu.be/QGNNsiINehI?t=8385)**):**
Tucker breaks rule three three more times. Tucker criticizes the Hooper (2020) meta-analysis by stating that the analysis found "little to no effect" of reducing saturated fat on CVD mortality. Not only is this tangential, but Matt humours the objection long enough to make the point that events is a much more sensitive endpoint than mortality, and events is where the benefit can be seen. Matt follows up by asking Tucker if he thinks reducing total CVD events is beneficial if all else was held equal, which is a simple yes or no question. Rather than answering, Tucker starts painting a caricature of Matt's question instead. When it is clear that Matt is not getting a straight answer, the moderator interjects and allows the yes-or-no question to be asked again. Again, Tucker dodges.
**Direct contradiction (**[**2:21:19**](https://youtu.be/QGNNsiINehI?t=8479)**):**
Tucker takes the position that silent and non-fatal AMIs are not important outcomes and we need not care about them. Yet, at [**1:16:22**](https://youtu.be/QGNNsiINehI?t=4582), Tucker makes it clear that silent and non-fatal AMIs are important and that we should care about them.
This one is pretty straight forward. Either silent and non-fatal AMIs are important and we should care about them, or they are not important and we shouldn't care about them. If Tucker wishes to remain consistent while also preserving his own arguments, we'd need to accept that silent and non-fatal AMIs are important, and that we should care about them. This entailment can by syllogized like this:
![][argument6]
[argument6]: /blog/nagragoodrich/argument6.png
**Rule violation (**[**2:25:20**](https://youtu.be/QGNNsiINehI?t=8720)**):**
Tucker breaks rule four for the seventh time. After agreeing to discuss the results of Hooper (2020), Tucker suddenly attempts to steer the debate toward some sort of meta-level discussion about seed oil consumption in the general population.
**Rule violation (**[**2:30:31**](https://youtu.be/QGNNsiINehI?t=9031)**):**
Tucker breaks both rules four and six. The moderator poses a question to both Matt and Tucker, and gets a satisfactory answer from both Matt and Tucker. However, rather than returning the floor to the moderator or continuing with the debate, Tucker takes the opportunity to address points that Matt hasn't even made yet in the debate, and doesn't give Matt any amount of time to respond.
**Rule violation (**[**2:37:06**](https://youtu.be/QGNNsiINehI?t=9426)**):**
Tucker breaks rules two and four again. The moderator recognizes that Tucker's incoherent flow-of-consciousness monologue has been going on for nearly ten minutes, and the moderator tries to interject. Tucker cuts the moderator off and proceeds to ramble about vitamin E for another minute.
# ECOLOGICAL STUDIES
**Rule violation (**[**2:38:42**](https://youtu.be/QGNNsiINehI?t=9522)**):**
Tucker can't help but break rule four again. Tucker interjects, before Matt can even finish a single sentence, in order to tell Matt that ecological studies are the worst form of epidemiology. At this point it is fair to say that Tucker is breaking rule one as well. It's clear that Tucker is no longer here for an "open, conversation-style" debate.
**Direct contradiction (**[**2:38:50**](https://youtu.be/QGNNsiINehI?t=9530)**):**
Tucker takes the position that ecological studies are of critical importance, superseding all other forms of epidemiology. Yet, only moments earlier, Tucker took the position that ecological studies are the worst form of epidemiological evidence.
Again, we have another relatively simple inconsistency to address. In order for Tucker to make his case against seed oils, he systematically rejected all nutritional epidemiology except for ecological studies. Yet, claiming that ecological studies are the worst form of epidemiology entails a contradiction, as it means that Tucker is simultaneously holding the view that it is both the best and the worst form of epidemiology at the same time. If Tucker wished to resolve the inconsistency, he'd probably have to acknowledge that ecological studies are not the worst form of epidemiology. This can be syllogized like this:
![][argument7]
[argument7]: /blog/nagragoodrich/argument7.png
# SYDNEY DIET-HEART STUDY
**Direct contradiction (**[**2:42:37**](https://youtu.be/QGNNsiINehI?t=9757)**):**
Tucker makes the claim that we can't know whether or not the margarine used in Sydney Diet-Heart Study (SDHS) contained TFA. Moments later, at [**2:44:23**](https://youtu.be/QGNNsiINehI?t=9863) he suggests that it is valid to argue that we absolutely can know the margarine in SDHS did not contain TFA.
If Tucker maintains that it cannot be known whether or not TFA was confounding in SDHS, then he cannot posit that it can be known one way or the other. Either position that Tucker took could work for his argument on this subject, but they're just not compatible with each other, and that can be illustrated like this:
![][argument8]
[argument8]: /blog/nagragoodrich/argument8.png
**Rule violation (**[**2:57:59**](https://youtu.be/QGNNsiINehI?t=10679)**,** [**2:58:53**](https://youtu.be/QGNNsiINehI?t=10733)**):**
Tucker breaks rule three two more times. While discussing a paper that models substitutions of olive oil for various other fats, Matt asks Tucker if he has any problems with the paper. Rather than answering, Tucker starts discussing issues he has with another paper published by the same group investigating dairy fat. Matt attempts to interject, but Tucker continues to discuss previous research on potatoes that was also published by this group.
**Rule violation (**[**2:59:44**](https://youtu.be/QGNNsiINehI?t=10784)**):**
Tucker breaks rules two, three, and four again. Matt once again asks Tucker if he has any issues with the olive oil substitution analysis. Rather than answering, Tucker cuts Matt off before he can finish asking his question, and Tucker starts asking why Matt included the paper in his references.
**Rule violation (**[**3:00:44**](https://youtu.be/QGNNsiINehI?t=10844)**):**
Tucker once again breaks rule three. Matt asks his yes-or-no question yet again, to which Tucker responds by stating that the mechanisms favour his position. This is just another dodge.
**Rule violation (**[**3:00:53**](https://youtu.be/QGNNsiINehI?t=10853)**,** [**3:02:18**](https://youtu.be/QGNNsiINehI?t=10938)**):**
Tucker breaks rule three again, despite it now being enforced by the moderator. The moderator notices that Matt is not getting an answer to his question, and the moderator steps and reminds Tucker of the question being asked. Rather than answering the question, Tucker continues to discuss mechanisms. The moderator again notices that this doesn't answer Matt's question, and implores Tucker to answer. Again, Tucker dodges the question and starts talking about the paper itself, rather than addressing Matt's question about Tucker's interpretation of the paper.
**Rule violation (**[**3:06:00**](https://youtu.be/QGNNsiINehI?t=11160)**):**
Tucker breaks rules one and six again. Not even one minute after Tucker grants Matt the floor to make a point about mechanistic data, Tucker interrupts Matt on the basis that Matt's point isn't relevant. Though, only moments before, the moderator gave Matt the floor to complete his point. It is clear that Tucker has no respect for the moderator's wishes, nor the debate parameters.
**Rule violation (**[**3:06:52**](https://youtu.be/QGNNsiINehI?t=11212)**):**
Tucker breaks rules one and six again. For the second time, Tucker interrupts Matt when he's been given the floor by the moderator to complete his point.
# OLIVE OIL SUBSTITUTION ANALYSIS
**Rule violation (**[**3:13:34**](https://youtu.be/QGNNsiINehI?t=11614)**):**
Tucker breaks rules two again. Rather than letting Matt complete his point about the olive oil substitution analysis, Tucker interrupts him.
**Direct contradiction (**[**3:15:10**](https://youtu.be/QGNNsiINehI?t=11710)**):**
Tucker concedes that margarine and mayonnaise are not the same thing as isolated vegetable oils. However, at [**3:14:30**](https://youtu.be/QGNNsiINehI?t=11670), Tucker rejects that there are differences between margarine, mayonnaise, and isolated vegetable oils. Another layer of hilarity would be to point out that if Tucker maintains that mayonnaise is the same as an isolated seed oil, he'd be holding the position that corn oil is not a seed oil, but mayonnaise is.
![][argument9]
[argument9]: /blog/nagragoodrich/argument9.png
# DISCUSSION
This is where the debate portion of the episode ends, with Matt and Tucker both giving their closing statements. Altogether, Tucker violated the rules at least 50 times and committed at least 18 fallacies, and that's not counting the various hilarious empirical and epistemic claims that Tucker made. For anyone interested in reading more about Tucker's errors, Matt published a comprehensive rebuttal to his personal blog, which can be found on [Matt's blog](https://drmatthewnagra.com/seed-oil-debate-with-tucker-goodrich/). From what I could tell, Matt did not really break the rules at all, except for perhaps a few minor instances when he attempted to interject when Tucker was rambling. Other than that, he conducted himself according to the rules.
Whether you're skeptical, supportive, or unsure of Tucker's work, I hope that this debate, as well as the breakdown contained within this article, gives you a decent perspective on just how bad his arguments actually are. I'm truly failing to imagine any good reasons for why someone with a stable position, which is truly robust to scrutiny, should struggle this hard to stay consistent in a debate. Tucker's performance was truly terrible, and should be eye-opening to anyone who thought that he might have even a scrap of credibility within this domain.
Thank you for reading! If you like what you've read and want help me create more content like this, consider pledging your [Support](https://www.uprootnutrition.com/donate). Every little bit helps! I hope you found the content interesting!"""
, articleReferences =
[ { author = ""
, title = ""
, journal = ""
, year = ""
, link = ""
}
]
}

View file

@ -0,0 +1,597 @@
module Config.Pages.Blog.Records.SapienDiet exposing (..)
import Config.Pages.Blog.Types exposing (..)
import Route.Path as Path
articleSapienDiet : BlogArticle
articleSapienDiet =
{ articleName = "The Sapien Diet: Peak Human or Food Lies?"
, articleDescription = "This article tackles many of the dubious claims made by ancestral diet advocate, Brian Sanders, during his popular 2020 talk, \"Despite what you've been told COWS CAN SAVE THE WORLD\". In this talk, Brian makes a number of baseless claims related to health, nutrition, argiculture, environmental science, and ethical philsophy. Make no mistake virtually every listener was likely rendered slightly dumber for each word they heard leave Brian's mouth during his 26 minute presentation."
, articleLink = Path.toString Path.Blog_Sapiendiet
, articleAuthor = "Nick Hiebert"
, isNewTabLink = False
, articleImage = "sapiendiet"
, articlePublished = "Aug 24, 2022"
, articleBody = """
[Brian Sanders](https://www.sapien.org/brian) is an entrepreneur and filmmaker who advocates for an "ancestral" diet he has coined the Sapien Diet. This diet is characterized by high intakes of animal products and considerably strict abstinence from processed food consumption. His diet is supposedly based on the teaching of [Weston Price](https://en.wikipedia.org/wiki/Weston_A._Price), a dentist and nutritional anthropologist of the early 1900s who also advocated for the consumption of animal products. Right off the bat, we can tell that Brian's diet is marinated in quackery, as Price's methods and inferences were [questionable at best](https://quackwatch.org/related/holisticdent/).
Whatever the case, Brian publicly advocated for his diet back in 2020 during a talk at [Low Carb Down Under](https://lowcarbdownunder.com.au) entitled ["Despite what you've been told COWS CAN SAVE THE WORLD"](https://www.youtube.com/watch?v=VYTjwPcNEcw). In this talk, he describes the benefits and virtues of animal food production and consumption, and also touches on the supposed pitfalls and fallacies of veganism and plant-based diets. He structures his talk into three sections, which serve as direct rebuttals to three propositions that he characterizes as mainstream:
- Red meat is harmful to human health.
- Cows are harmful to the environment.
- It's unethical to kill animals for food.
Brian's talk is riddled with half-truths, misunderstandings, bald-faced lies, and other idiocy. To go through everything individually would take far too long, so in this article I will only be addressing the primary points that Brian makes throughout his presentation. Some of the quotes that I will be referencing will be paraphrased to account for Brian's unclear manner of speaking, but I nonetheless believe that I have represented his beliefs fairly. So, let's dive in!
# HEALTH CLAIMS
**Claim #1 (**[**4:52**](https://youtu.be/VYTjwPcNEcw?t=292)**):**
>_Hong Kong eats the most amount of meat and animal foods in the world and has the longest life expectancy._
**Post-hoc Fallacy**
This is just a post-hoc fallacy and a misunderstanding of the evidence being presented. Firstly, Brian's argument doesn't even get off the ground unless there is an assessment of what is causing the differences in longevity, and how the mortality stats are calculated. In this case, Brian is suggesting temporal connections that can't be verified to exist based on the data provided. More to the point, differential ecological associations between populations can't really tell us anything about differences in outcomes between individuals consuming the least meat versus individuals consuming the most meat.
For example, there is a positive ecological association between smoking and life expectancy [[1]](http://www.thefunctionalart.com/2018/07/visualizing-amalgamation-paradoxes-and.html). But, we wouldn't infer from this association that cigarette consumption increases longevity. Those sorts of inferences are what prospective cohort studies and randomized controlled trials are for, as they are actually equipped to assess individual-level exposure and outcomes.
![][image1]
[image1]: /blog/sapiendiet/image1.png
**Base Rate Fallacy**
According to Brian's source, Hong Kong's meat intake has been steadily increasing and didn't reach UK-levels of intake in 1972 and US-levels of intake in 1967 [[2]](https://www.nationalgeographic.com/what-the-world-eats/). If the hypothesis is that meat causes higher mortality via chronic disease, then people who started eating that much meat during those time periods would barely even be old enough to contribute substantially higher mortality statistics at the time of this report anyway. So, while it's true that Hong Kong now eats a lot of meat and enjoys longer lifespans, Brian is not appreciating the base rate of historical meat consumption for this population.
As an aside, it is also interesting to note that those in Hong Kong who followed a non-ancestral "Portfolio diet" (which is characterized by low saturated fats, sodium, and dietary cholesterol, as well as higher plant proteins, vegetable oils, high fruits, vegetables, and whole grains) were at a lower risk of dying from all causes, as well as dying of CVD or cancer [[3]](https://pubmed.ncbi.nlm.nih.gov/34959911/). In fact, multiple sensitivity analyses were done to remove the possibility for reverse causality, and the reductions in risk are still apparent.
**Claim #2 (**[**5:13**](https://youtu.be/VYTjwPcNEcw?t=313)**):**
>_There is an inverse association between red meat and total mortality in Asian populations._
**Red Herring**
The aggregated difference in the lowest to highest red meat intake in this pooled analysis was ~60g/day, which is approximately two bites [[4]](https://pubmed.ncbi.nlm.nih.gov/23902788/). It's unclear how this is capable of informing our judgements about the health value of red meat in the context of something like a Sapien Diet. Not only that, but the contrast is occurring primarily at lower levels of intake.
![][image2]
[image2]: /blog/sapiendiet/image2.png
Generally speaking, contrasts in red meat intake exceeding 80-100g/day are typically required on a per-cohort basis to reveal the increased risk of cardiovascular disease mortality or even all-cause mortality. Contrasts that fall below this threshold often do not provide for the statistical power that is necessary to obtain a statistically significant estimate.
Brian's own reference also confirms that meat intake in Asian populations is generally quite a bit lower than the United States.
![][image3]
[image3]: /blog/sapiendiet/image3.png
>_Per capita beef consumption has decreased to some degree in the past decade in the United States but still remains substantially higher than that in Asian countries. Beef consumption increased in China, Japan, and Korea from 1970 to 2007._
In actuality, when we select Asian populations with the widest contrasts in red meat intake, with sound multivariable adjustment models, appropriate population ages, and adequate follow-up time, we see the increase in total mortality with red meat very clearly [[5]](https://pubmed.ncbi.nlm.nih.gov/33320898/). Even when diet and lifestyle covariates are balanced between ranges of intake. These results are also consistent with results we see in American cohorts that also balance diet and lifestyle covariates reasonably well, such as the Nurse's Health Study [[6]](https://pubmed.ncbi.nlm.nih.gov/22412075/).
**Potential Contradiction**
Additionally, Brian has [stated publicly](https://twitter.com/FoodLiesOrg/status/1419347985935257601?s=20&t=_2uz8-vTlkgxnFPP4DCqtg) that steak is a good source of iron and can protect against iron deficiency. This claim is in accord with the available evidence on red meat consumption and iron deficiency anemia, with unprocessed red meat associating with a 20% decreased risk of anemia in the UK Biobank cohort [[7]](https://pubmed.ncbi.nlm.nih.gov/33648505/). Interestingly, unprocessed red meat was also associated with a statistically significant increase in the risk of many other diseases as well.
![][image4]
[image4]: /blog/sapiendiet/image4.png
If the methods were sensitive enough to detect the inverse association with iron deficiency anemia, why not also conclude that the methods were also sensitive enough to detect the effect on heart disease as well? Why form differential beliefs about the causal nature of these associations?
Furthermore, the association between red meat intake and heart disease is observable when meta-analyzed as well [[8]](https://pubmed.ncbi.nlm.nih.gov/34284672/). For every 50g/day increase in red meat intake, there was a statistically significant dose-dependent relationship between red meat intake and heart disease.
Almost all of the most highly powered studies found positive associations between heart disease risk and red meat. Altogether, those studies also had the highest contrast in red meat, with Asian countries having the lowest contrast, as mentioned earlier. The majority of the included studies included adjustments for diet quality, used validated food frequency questionnaires, and had adequate follow-up time. The greatest increase in risk was found among studies with follow-up times exceeding 10 years. Removing all of the more poorly powered cohorts leaves us with a remarkably consistent relationship overall.
![][image5]
[image5]: /blog/sapiendiet/image5.png
This one change results in a 38.3% attenuation in the I², going from 41.3% to 13%. Which suggests that of the variance that was attributable to heterogeneity, poor statistical power could explain about 68% of it.
Lastly, when cohort studies from around the world are meta-analyzed, we see the same thing for all cause mortality [[9]](https://pubmed.ncbi.nlm.nih.gov/24148709/). Overall, there is a non-significant increase in all-cause mortality risk when comparing the lowest red meat intakes to the highest red meat intakes. Whiteman, et al. (1999) was the only study that found a statistically significant decrease in risk, and is the sole reason for the non-significant finding.
However, Whiteman, et al. also had one of the shortest follow-up times, one of the youngest populations (and thus one of the lowest death rates), and used a very poor adjustment model (only adjusting for three confounders). If a leave-one-out analysis is performed that excludes Whiteman, et al., a different picture is painted.
![][image6]
[image6]: /blog/sapiendiet/image6.png
Anybody who wishes to complain about this reanalysis is free to try to explain to me why increasing the potential for bias with poor multivariable adjustment is a desirable thing. But, it probably doesn't matter anyway. This meta-analysis was published in 2014, and more cohort studies have been published since then. If we add those results to the original forest plot conducted by Larsson et al., we would still get significant results.
![][image7]
[image7]: /blog/sapiendiet/image7.png
**Claim #3 (**[**5:22**](https://youtu.be/VYTjwPcNEcw?t=322)**):**
>_We cannot use correlational studies to try to say that meat is bad._
**Category Error**
It's unclear what this means. As per the Duhem-Quine thesis, all scientific findings are correlational in one way or another [[10]](https://en.wikipedia.org/wiki/Duhem%E2%80%93Quine_thesis). As such, the state of being "correlational" is not a differential property between any two modes of scientific investigation. For example, intervention studies are a form of observational study, because you're observing what happens when you intervene. So this objection just seems like confusion, because if there ever was a study that showed meat to be "bad", it would be straightforwardly correlational in nature. Assuming that what Brian means by "correlational studies" is actually just nutritional epidemiology, even that would still be wrong.
In 2021, Shwingshakl et al. published an enormous meta-analysis that compared the results of 950 nutritional randomized controlled trials to results from 750 prospective cohort studies [[11]](https://pubmed.ncbi.nlm.nih.gov/34526355/). In the aggregate, results from nutritional epidemiology are consistent with results from nutritional randomized controlled trials approximately 92% of the time when comparing intakes to intakes (omitting supplements).
![][image8]
[image8]: /blog/sapiendiet/image8.png
Across 23 comparisons of meta-analytically summated findings from both bodies of evidence, only 2 comparisons showed discordance. This means that nutritional epidemiology tends to replicate in randomized controlled trials in the supermajority of cases.
If not randomized controlled trials, I have no idea where Brian plants his goalpost for high evidential quality. Nevertheless, current evidence suggests that nutritional epidemiology is highly validated methodology if randomized controlled trials are used as the standard. If one places high credence in randomized controlled trials, it's unclear why they wouldn't also place high credence in nutritional epidemiology.
**Claim #4 (**[**5:36**](https://youtu.be/VYTjwPcNEcw?t=336)**):**
>_73% of hunter gatherers get over 50% of their diet from animal foods._
**Non Sequitur**
I'm not sure why we should care. If this isn't cashing out into some sort of health claim, then it seems very much like a non sequitur. Assuming this is implying something about the health value of hunter-gatherer diets, it is also misleading. I've discussed [here](https://www.the-nutrivore.com/post/should-we-eat-like-hunter-gatherers) why positions like this ultimately fail.
**Claim #5 (**[**5:51**](https://youtu.be/VYTjwPcNEcw?t=351)**):**
>_We have beef as this highly bioavailable, easily digestible protein, and beans is one example of something that is touted as a pretty high protein food. But this is not the case._
**False Claim**
This is just whacky, and it seems to be based on data from a 1950s textbook to which I cannot get access. However, we don't really need to in order to address this claim. Let's take a look at this table that Brian has generated.
![][image9]
[image9]: /blog/sapiendiet/image9.png
First of all, if these two foods are weight-standardized, then the protein content of navy beans only makes sense if the navy beans were considered raw. Navy beans can't even be consumed raw because they're hard as fucking rocks. So, immediately this table is potentially misleading, having possibly presented an unrealistic comparison between these two foods. But, that's not the most egregious part of Brian's table. It's actually completely unnecessary to consider digestibility and biological value separately as Brian has [[12]](https://pubmed.ncbi.nlm.nih.gov/26369006/).
> _"The PDCAAS value should predict the overall efficiency of protein utilization based on its two components, digestibility and biological value (BV; nitrogen retained divided by digestible nitrogen). The principle behind this approach is that the utilization of any protein will be first limited by digestibility, which determines the overall amount of dietary amino acid nitrogen absorbed, and BV describes the ability of the absorbed amino acids to meet the metabolic demand."_
Biological value is inherently captured by both of the standard protein quality scores, the protein digestibility-corrected amino acid score (PDCAAS) and the digestible indispensable amino acid score (DIAAS). This means that if you want to represent all the things that matter for a given protein in isolation (such as digestibility, biological value, and limiting amino acids), all you need is either a PDCAAS or DIAAS value for the proteins in question. But, the DIAAS is probably better.
![][image10]
[image10]: /blog/sapiendiet/image10.png
Aggregating DIAAS data across multiple protein foods paints a completely different picture than the one that Brian cobbled together [[13]](https://pubmed.ncbi.nlm.nih.gov/28748078/)[[14]](https://pubmed.ncbi.nlm.nih.gov/33333894/)[[15]](https://pubmed.ncbi.nlm.nih.gov/34476569/)[[16]](https://onlinelibrary.wiley.com/doi/full/10.1002/fsn3.1809). Some plant proteins actually do quite well. But what are these numbers really representing? Ultimately the scores are going to be truncated by limiting amino acids more than any other parameter, and pairing complementary proteins will increase the DIAAS value [[17]](https://pubmed.ncbi.nlm.nih.gov/34685808/). In fact, this is also true of the PDCAAS, as combining different lower-scoring plant proteins will often result in perfect scores [[18]](https://www.2000kcal.cz/lang/en/static/protein_quality_and_combining_pdcaas.php).
![][image11]
[image11]: /blog/sapiendiet/image11.png
If beef is awesome in virtue of it getting a perfect score for protein digestibility, biological value, and limiting amino acids, then navy beans and wild rice must also be awesome too. If not, then I don't know what the hell Brian is talking about, or why he even brings the point up. It's also worth pointing out that certain animal foods, like collagen, actually score a zero on the PDCAAS as well.
As an aside, even if plant protein was generally inferior to animal protein by some evaluative standard (such as the PDCAAS or DIAAS), it would not necessarily mean that it would be more desirable to consume animal protein over plant protein. That would depend on one's goals. In fact, animal protein is associated with a number of chronic diseases in a dose-dependent manner, whereas plant protein is inversely associated, also in a dose-dependent manner [[19]](https://pubmed.ncbi.nlm.nih.gov/32699048/). This also holds true for Japanese populations, by the way [[20]](https://pubmed.ncbi.nlm.nih.gov/31682257/).
**Claim #6 (**[**6:35**](https://youtu.be/VYTjwPcNEcw?t=395)**):**
>_744 studies were excluded from consideration in the WHO's evaluation of meat as a carcinogen._
**Red Herring**
Here, Brian is referring to an analysis on red meat and colorectal cancer risk that was conducted by the International Agency for Research on Cancer (IARC) [[21]](https://pubmed.ncbi.nlm.nih.gov/26514947/). If you dig into the IARC's methods, you can see that they had very specific, sound inclusion-exclusion criteria, which involved selecting cohort studies with the widest contrasts in red meat intake, clear definitions, sufficient event rates and participant numbers, and adequate adjustment models.
>_A meta-analysis including data from 10 cohort studies reported a statistically significant dose-response association between consumption of red meat and/or processed meat and cancer of the colorectum. The relative risks of cancer of the colorectum were 1.17 (95% CI, 1.05-1.31) for an increase in consumption of red meat of 100 g/day and 1.18 (95% CI, 1.10-1.28) for an increase in consumption of processed meat of 50 g/day. Based on the balance of evidence, and taking into account study design, size, quality, control of potential confounding, exposure assessment, and magnitude of risk, an increased risk of cancer of the colorectum was seen in relation to consumption of red meat and of processed meat."
This is very sensible methodology for anyone familiar with epidemiology. Additionally, this is not the only reason Brian's claim is misleading, because there are not 744 cohort studies or RCTs combined on this question. Full stop. I can only imagine that he is referring to mechanistic studies or other weaker forms of evidence. He's never fully unpacked this claim, to my knowledge.
**Claim #6 (**[**7:05**](https://youtu.be/VYTjwPcNEcw?t=425)**):**
> _There were 15 studies showing that red meat was good and 14 studies showing that red meat was bad. I mean, it's basically a toss-up._
**Red Herring**
Again, the IARC had very strict inclusion-exclusion criteria, and of the studies that met those criteria, the majority of them found statistically significant associations between red meat and colorectal cancer. This is after multivariable adjustment for known confounders and covariates, in populations that we'd expect to have an increased risk. It's straight up expected that not all of the available studies on a given research question will be included in a meta-analysis.
**Red Herring**
Brian then goes on to claim that the results are a toss-up simply because there were 15 studies ostensibly showing that red meat was "good" and 14 studies ostensibly showing that red meat was "bad". To imply that this is necessarily a "toss up" is just pure confusion. Even if you have double the studies showing that red meat is "good", that doesn't necessarily mean there is a lower probability that red meat is "bad". It depends on the strength of the studies included. Consider this forest plot.
![][image12]
[image12]: /blog/sapiendiet/image12.png
Here we see that despite the fact that there is a 2:1 ratio of studies that show a decreased risk with red meat to studies that show an increased risk with red meat, the summary effect measure still points toward a statistically significant increase in risk. This is because not every study has equal power or precision. Some findings are just less certain than others.
**Claim #7 (**[**7:22**](https://youtu.be/VYTjwPcNEcw?t=442)**):**
>_The risk factor of cancer from meat is 0.18%, whereas the risk factor of cancer from smoking is 10-30%._
**Unintelligible**
This is truly bizarre. It's incredibly unclear what Brian is trying to say here, and he was unable to unpack it to me in [our verbal debate](https://www.youtube.com/watch?v=S8p39Gwct1Y), so I'm not even sure he knowns what the fuck he means. His use of the term "risk factor" here makes the utterance appear like a category error. However, if I really stretch my imagination, I may be able to cobble together an interpretation that isn't gibberish.
**Equivocation**
Firstly, this appears to be just a straight up equivocation of cancer types. Colorectal cancer and lung cancer are two different diseases, and the prevalence of these diseases are different in the general population. If Brian's criticism is that the relative risk of lung cancer from smoking is higher than the relative risk of colorectal cancer from red meat, then he's just confused. Massive differences in the magnitude of those effect estimates are expected, as the prevalence of a given disease will determine the maximum possible relative risk [[22]](https://pubmed.ncbi.nlm.nih.gov/21402371/).
![][image13]
[image13]: /blog/sapiendiet/image13.png
Let's take a look at the prevalence of these diseases in Canada [[23]](https://cancer.ca/en/cancer-information/cancer-types.). The prevalence of lung cancer among Canadian non-smokers is 1 in 84 (1.19% prevalence). Prevalence of colorectal cancer, assuming red meat has nothing to do with colorectal cancer, is 1 in 16 (6.25% prevalence). The baseline prevalence of lung cancer is much smaller than the baseline prevalence of colorectal cancer, so comparing the two is dubious.
In the case of lung cancer and colorectal cancer, the maximum possible relative risks would be ~53 and ~16, respectively. So it's not even mathematically possible for the relative risk of colorectal cancer from red meat to even approach the upper bounds for the relative risk of lung cancer from smoking that Brian submitted (assuming he meant 30x and not 30%).
For this reason, it's best that we do an apples to apples comparison. In a massive 2009 analysis by Huxley, et al., which helped inform the IARC's analysis on meat and cancer, 26 cohort studies were included in their meta-analytic summation [[24]](https://pubmed.ncbi.nlm.nih.gov/19350627/). Overall they showed a statistically significant 21% increase in risk of colorectal cancer with unprocessed red meat.
However, they also included an analysis on smoking, which found a statistically significant 16% increase in the risk of colorectal cancer with smoking as well. Yes, that is right there was a slightly stronger association between red meat and colorectal cancer than there was between smoking and colorectal cancer. But the two were likely non-inferior. Huxley et al. also found around the same magnitude of effect for many other exposures.
![][image14]
[image14]: /blog/sapiendiet/image14.png
What's the symmetry breaker? Why form a causal belief with regards to smoking or physical inactivity or obesity and not red meat? If Brian argues that he doesn't infer causality for any of the exposures with non-inferior effect sizes to red meat, then the appropriate thing to do is honestly just to laugh at his absurdity and move on.
If Brian argues that red meat has never been studied in the context of a junk-free diet, then we could just argue it in the opposite direction. For example, the smoking literature is also notoriously unadjusted for dietary covariates (which is something not many people appreciate about that body of evidence). As such, smoking arguably has never been studied in the context of a meat-free diet either, so perhaps the data on smoking is simply biased by red meat. Again, we need symmetry breakers.
**Claim #8 (**[**7:37**](https://youtu.be/VYTjwPcNEcw?t=457)**):**
> _Ancestral foods are better than processed foods._
**Appeal to Nature**
Why should we be using anthropological data about ancestral diets to inform best practice in terms of modern diets for modern humans? And why is the property of being ancestral a reasonable sufficiency criteria for a food to be "better" than processed foods? This seems like a non sequitur.
Favouring whole foods is heuristic, and not a rule. There are plenty of examples of processed foods being superior to whole foods, even foods that we could identify as ancestral. In fact, there are been specific analyses investigating the differential contributions of animal-based foods (red meat, poultry, fish, dairy, and eggs) and ultra-processed foods to disease risk within the context of a health-conscious population [[25]](https://pubmed.ncbi.nlm.nih.gov/35199827/).
![][image15]
[image15]: /blog/sapiendiet/image15.png
Overall, ultra-processed foods and animal foods are non-inferior to one another for CVD mortality and cancer mortality risk. Animal based foods also seem to associate with the risk of endocrine disorders like T2DM, whereas ultra-processed foods did not. Once again, we require symmetry-breakers. Why form the belief that ultra-processed foods increase the risk of these diseases and not animal foods?
# ENVIRONMENTAL CLAIMS
**Claim #9 (**[**10:13**](https://youtu.be/VYTjwPcNEcw?t=613)**):**
>_Grazing agricultural systems are better for the environment and sequester more carbon._
**False Claim**
This claim is as hilarious as it is vague. Firstly, better compared to what? According to Brian's reference (which was an analyses of the association between White Oak Pastures' regenerative grazing methodology and carbon balance) it was assumed that carbon sequestration estimates were exclusively from beef, yet poultry accounted for almost half of the carcass weight (46.5%) of the entire system [[26]](https://www.frontiersin.org/articles/10.3389/fsufs.2020.544984/full). They also cant even attribute the sequestration to cows because the study was cross-sectional in design.
This study isn't actually investigating temporal changes in soil carbon at all. To make matters worse, the author's darling figure, 4.4kg CO-e kg carcass weight1 per year, was actually just produced from thin air, and the cross-sectional association between years of grazing and soil carbon stocks between pasturelands was just assumed to be reflecting grazing-mediated soil carbon sequestration. Utterly misleading sophistry.
> _"Importantly, if we were to attribute the soil C sequestration across the chronosequence to only cattle, MSPR beef produced in this system would be a net sink of 4.4 kg CO2-e kg CW1 annually."_
Even just ignoring the fact that this methodology creates mathematically atrocious pigs and chickens in terms of carbon balance in their model, the data provided suggests that 20 years worth of carbon sequestration are roughly equal to three years of plant composting. In second figure of the publication, they show a cross-sectional analysis of seven different degraded lands (previously used for crops) that are in the process of being restored over a varied number of years.
![][image16]
[image16]: /blog/sapiendiet/image16.png
>_In years 13, these fields are minimally grazed and receive 1 cm of compost ha1 yr1. After year 3, exogenous inputs (hay and compost) were ceased, and the regeneration strategy shifted toward an animal-only approach, whereby animals were the primary mechanism of improving the land._
The third dot is roughly equal to that of the seventh dot on the chart, which represents three years of plant composting and 20 years of grazing, respectively. If we're assuming a causal relationship between grazing and soil carbon stock, why not also assume a causal relationship between composting and soil carbon stock?
If composting can increase soil carbon sequestration that much, why are they even trying to argue for grazing agriculture as a solution? It would appear that plant agriculture waste could be a viable solution for restoring these degraded lands as well. This is also just granting that these associations are reflective of soil carbon sequestration over time at all, which they may not be. Again, this analysis is cross-sectional.
It's convenient that the time scale of the investigation by Rowntree, et al. caps out at 20 years, because current literature suggests that there is a soil carbon saturation point at around 20 years, after which pasture grazing systems will yield diminishing returns.
![][image17]
[image17]: /blog/sapiendiet/image17.png
Here we see three different scenarios for soil carbon sequestration rates from grazing agriculture. Even under the most generous estimates (the larger black hashed line), soil carbon sequestration plateaus at around 20 years.
However, current estimates suggest that if we switch to more plant-predominant diets by the year 2050, we could reforest a large proportion of current pastureland, which acts as a substantial carbon sink (~547GtCO2) [[27]](https://www.nature.com/articles/s41893-020-00603-4). The effect of that over 30 years is to neutralize about 15 years of fossil fuel emissions and 12 years of total world GHG emissions.
If we switch to plant-predominant diets by 2050 we could sequester -14.7 GtCO2 per year by reforesting pasture land, compared to other agricultural methods that make use of grazing land for pasture. Merely the introduction of pasture grazing increases land use by almost double compared to a vegan agricultural system [[28]](https://experts.syr.edu/en/publications/carrying-capacity-of-us-agricultural-land-ten-diet-scenarios).
![][image18]
[image18]: /blog/sapiendiet/image18.png
In fact, there are stepwise decreases in the per-person carrying capacity of different agricultural scenarios as more pastureland is included in the model. However, vegan agricultural scenarios were largely comparable to both dairy-inclusive and egg-inclusive vegetarian models.
![][image19]
[image19]: /blog/sapiendiet/image19.png
As mentioned earlier in this article, there are plant agriculture methods that are also touted as "regenerative", that also may have greater soil carbon sequestration potential per hectare than current "regenerative" grazing livestock methods [[29]](https://www.nature.com/articles/ncomms6012). It would be interesting to see a head-to-head comparison of wheat versus meat, using "regenerative" methodology, on soil carbon sequestration overall.
**Claim #10 (**[**13:15**](https://youtu.be/VYTjwPcNEcw?t=795)**):**
>_We have enough land for grazing agricultural systems._
**False Claim**
It has been calculated that even if all grasslands were repurposed for grazing, this could provide everyone on earth with 7-18g/day of animal protein per person on Earth [[30]](https://www.oxfordmartin.ox.ac.uk/publications/grazed-and-confused/). The authors also provided a hyper-idealized, candy-land scenario they also calculated that 80g/day of animal protein per person on Earth. However, this would require all pasturable land on Earth being used. As an aside, the authors also calculated an additional scenario that included waste from plant agriculture, but it probably won't be very relevant to Brian's idealized world, because plant agriculture would be extremely minimal on the Sapien Diet.
The remaining two scenarios encounter some issues when we think of what would be required to sustain people on meat-heavy diets, because 80g of protein from the fattiest beef still would not provide enough calories per person. We would appear to need multiple planets. But we should use a grass-fed example to do the calculations, so I've chosen White Oak Pastures' ground beef as the example meat. We'll also be multiplying the results by 2.5 to account for the extra land used by rotational grazing and/or holistic management [[26]](https://www.frontiersin.org/articles/10.3389/fsufs.2020.544984/full).
![][image20]
[image20]: /blog/sapiendiet/image20.png
Under no plausible scenario (calculable from the 'Grazed and Confused?' report) would either continuous grazing or rotational grazing be tenable on a global scale. Even if the calorie allotment for animal foods in the EAT Lancet diet was occupied only by grass-fed beef, we'd still be exceeding the carrying capacity of the Earth by 70% for continuous grazing and 325% for rotational grazing. As for Brian's pet diet, the Sapien Diet, we'd need over 10 Earths in the optimistic plausible scenario.
Essentially, we would need to figure out a way to extend the pasturable land beyond the available land on Earth. Perhaps we could do this by terraforming Mars or ascending to a type 2 civilization on the Kardashev scale by building a megastructure in space, such as a Dyson sphere or an O'Neill cylinder. But, those options don't sound very ancestral at all.
![][image21]
[image21]: /blog/sapiendiet/image21.png
We're not even scratching the surface, though. The authors of 'Grazed and Confused?' likely did not consider the suitability of each grassland in their calculation, because current suitability thresholds are set for crop production, rather than livestock. The issue is that grass itself could be considered a crop, so it's unclear why suitability considerations that have been established for crop production wouldn't also apply to pasture-raised animal production.
The IIASA/FAO define the suitability of a given grassland as a threshold of a 25% ratio of actual yield per acre and potential yield per acre [[31]](https://pure.iiasa.ac.at/id/eprint/13290/). Had these suitability criteria been considered by the authors of 'Grazed and Confused?', their models likely would have produced much smaller estimates. This is because much of the available grassland is either unsuitable or poorly suitable to begin with.
![][image22]
[image22]: /blog/sapiendiet/image22.png
These suitability criteria have been used by livestock agriculture advocates to argue against the scalability of crop agriculture and for the scalability of grazing-based livestock agriculture [[32]](https://www.sciencedirect.com/science/article/abs/pii/S2211912416300013). However, [Avi Bitterman](https://twitter.com/AviBittMD) demonstrated on his [Discord server](https://discord.gg/YtfQNPnk) that these individuals are not symmetrically applying this standard and it would actually turn out that current "regenerative" grazing systems wouldn't be likely to even meet the suitability standards themselves.
According to figures produced by White Oak Pastures, their "regenerative" grazing system is far less efficient than conventional feedlot approaches [[33]](https://blog.whiteoakpastures.com/hubfs/WOP-LCA-Quantis-2019.pdf). Overall, White Oak Pastures uses 150% more land than conventional approaches to yield only about 20% of what a conventional farm can produce, and only 90% of the average slaughter weight.
![][image23]
[image23]: /blog/sapiendiet/image23.png
This would give us a "suitability" estimate of around 7%, which would likely drastically reduce the amount of grassland that would be considered suitable for "regenerative" grazing agriculture as well. It would be doubly important to adhere to this standard when critiquing "regenerative" plant agricultural methods, in order to ensure an apples-to-apples comparison [[29]](https://www.nature.com/articles/ncomms6012).
**Claim #11 (**[**13:54**](https://youtu.be/VYTjwPcNEcw?t=834)**):**
> _If we don't use all this cropland for corn, wheat, and soy...we can use some of this land for cows._
**False Claim**
Here, Brian presents us a with figure from the USDA showing the available cropland in the United States as of 2007, and suggests that we simply have enough land for "regenerative" grazing. No analysis or even conceptual model of how this could be done was actually provided. He just expects us to take it for granted that the claim is true. But is it actually true?
As with the issues for this narrative that were entailed from the land requirement estimates detailed in the 'Grazed and Confused?' report, this narrative again encounters similar issues here. Firstly, a complete grazing agriculture scenario has been modeled, and the results suggest that the United States wouldn't get anywhere close to plausibly being able to meet their current demand for beef with grazing agriculture [[34]](https://iopscience.iop.org/article/10.1088/1748-9326/aad401). We'd simply need more land. About 30% more land.
> _"Increases in cattle population, placements, and slaughter rates are demonstrated in figure 2. The increased slaughtering and placement numbers would also require a 24% increase in the size of the national beef cow-calf herd, proportional to the increased annual grass-finishing placement rate, in order to provide additional cattle to stock the grass-finishing stage. Increases in both the cow-calf herd and the grass-finishing population together would result in a total increase to the US cattle population of an additional 23 million cattle, or 30% more than the current US beef cattle population as a whole"_
![][image24]
[image24]: /blog/sapiendiet/image24.png
If Brian wants to criticize vegans for indulging idealized pie-in-the-sky fantasies, what in the sweet holy blue fuck is this shit? The United States can't maintain their current demands for beef with the system that Brian is proposing. This is doubly problematic if you consider that the White Oak Pastures model for which Brian advocates probably requires even more land than the conventional grazing methods included in the above model. This means that 30% could very well be an underestimate.
# ETHICAL CLAIMS
**Claim #12 (**[**19:11**](https://youtu.be/VYTjwPcNEcw?t=1151)**):**
> _Vegans kill animals too. It's death on a plate, there's just no blood._
**Appeal to Hypocrisy**
It's not clear what point this is trying to make. It seems like a failed appeal to hypocrisy to me. But, let's try to tackle the proposition in the most charitable way possible. Let's assume that Brian means to say that the Sapien Diet leads to fewer animal deaths than vegan diets that rely on plant agriculture (which is a claim that he has made before). In this case, this is just an empirical claim and needs to be supported by some sort of evidence.
In Brian's presentation, he supports this claim with a study of wood mouse predation after harvest, which showed that up to 80% of mice were preyed upon by predators upon the harvesting of cereal crops [[35]](https://www.sciencedirect.com/science/article/abs/pii/000632079390060E?via%3Dihub). What Brian isn't taking into account is that this can actually be used to are for less mouse predation on cropland as opposed to pastureland. Let me explain.
If you cut down your crop, you will expose the mice to predation. This is true. However, this also applies to pastureland. On pastureland, there is no substantial amount of tall forage that mice can use for shelter. The mice are exposed all year round. Which actually allows for the possibility that cropland could temporarily shelter mice from predators in a way that pastureland can't.
Furthermore, during [my debate](https://www.youtube.com/watch?v=S8p39Gwct1Y) with Brian, his cited evidence was the single cow that was killed when he paid a visit to his friend's cattle farm. Needless to say, this is not very good evidence, and this is not the evidence we will be using to steelman Brian's position. Instead, let's actually look at literature that compares the wildlife carrying capacity of plant verses grazing agricultural scenarios.
In 2020, Tucker et al. published a comprehensive comparative analysis of mammalian populations across a number of human-modified areas, such as cropland and pastureland [[36]](https://onlinelibrary.wiley.com/doi/full/10.1111/ecog.05126). Overall, their findings suggest that there is higher taxonomic diversity with increasing pastureland as opposed to increasing cropland.
![][image25]
[image25]: /blog/sapiendiet/image25.png
In the absence of countervailing data, this actually counts against the hypothesis that pastureland entails less animal death than cropland. This is because increasing taxonomic diversity implies a higher number of trophic strata. A higher number of trophic strata implies higher levels of predation. Higher levels of predation thus imply higher levels of animal death. The land with the lesser carrying capacity should probably be assumed to entail less death.
**Red Herring**
Even if we granted Brian that pastureland entailed fewer animal deaths than cropland, it's not clear why vegans should necessarily care. If veganism is understood to be a social and politic movement that aims to extend human rights to animals when appropriate, it's not clear how the deaths entailed from cropland would be incompatible to those goals. In fact, we'd likely tolerate the killing of people who threatened our food supply in comparable ways as well.
For example, if our food security was threatened by endless armies of humans with the intelligence of fieldmice or insects and we had no practical means of separating them from our food without killing them, I don't think we'd consider killing them to be a rights violation. In fact, we'd likely assume a similar defensive posture and similarly tolerate the loss of human life if a foreign country was also threatening to destroy our food. I doubt we'd even consider the enemy deaths entailed from such a defensive posture to constitute a rights violation. We have the right to defend our property against assailants, and I doubt Brian would even deny this himself.
**Claim #13 (**[**19:19**](https://youtu.be/VYTjwPcNEcw?t=1159)**):**
> _There is no life without death. This is how nature works...animals in nature either starve to death or are eaten alive...the animals are going to die either way, and it's not a good death...billions of people rely on animals for their livelihood._
**Potential Contradiction**
This proposition is simple to address. If Brian believes that we are ethically justified in breeding sentient animals into existence for the explicit purpose of slaughtering them for food, but we would not be justified in condemning humans to likewise treatment, he must explain why. This same question can be asked of him regardless of the justification he uses for animal agriculture.
During my debate with Brian, I submitted to him an argument for the non-exploitation of animals, which is essentially just a rephrasing of [Isaac Brown](https://twitter.com/askyourself92)'s [Name the Trait](https://drive.google.com/drive/folders/1tAjU2Bv1tsGbNLA2TfJesgbIh8JKh9zc) argument.
![][argument1]
[argument1]: /blog/sapiendiet/argument1.png
This argument for non-exploitation simply requires one to identify the property that is true of humans that also is untrue of animals, that if true of humans, would cause humans to lose sufficient moral value, such that wed be justified in slaughtering them for food as well. Brian rejected P3, stating that "consciousness" was the property true of humans, but untrue of animals, such that animals were ethical to exploit for food but humans were not. This fails and entails a contradiction on Brian's part, because consciousness is not a differential property between humans and the animals he advocates farming for food.
Thank you for reading! If you like what you've read and want help me create more content like this, consider pledging your [Support](https://www.uprootnutrition.com/donate). Every little bit helps! I hope you found the content interesting!
# BIBLIOGRAPHY"""
, articleReferences =
[ { author = "Cairo, Alberto"
, title = "Visualizing Amalgamation Paradoxes and Ecological Fallacies"
, journal = ""
, year = "2018"
, link = "http://www.thefunctionalart.com/2018/07/visualizing-amalgamation-paradoxes-and.html"
}
, { author = ""
, title = "What the World Eats"
, journal = "National Geographic"
, year = ""
, link = "http://www.nationalgeographic.com/what-the-world-eats/"
}
, { author = "Lo, Kenneth, et al."
, title = "Prospective Association of the Portfolio Diet with All-Cause and Cause-Specific Mortality Risk in the Mr. OS and Ms. OS Study"
, journal = "Nutrients"
, year = "2021"
, link = "https://doi.org/10.3390/nu13124360"
}
, { author = "Lee, Jung Eun, et al."
, title = "Meat Intake and Cause-Specific Mortality: A Pooled Analysis of Asian Prospective Cohort Studies"
, journal = "The American Journal of Clinical Nutrition"
, year = "2013"
, link = "https://doi.org/10.3945/ajcn.113.062638"
}
, { author = "Saito, Eiko, et al."
, title = "Association between Meat Intake and Mortality Due to All-Cause and Major Causes of Death in a Japanese Population"
, journal = "PloS One"
, year = "2020"
, link = "https://doi.org/10.1371/journal.pone.0244007"
}
, { author = "Pan, An, et al."
, title = "Red Meat Consumption and Mortality: Results from 2 Prospective Cohort Studies"
, journal = "Archives of Internal Medicine"
, year = "2012"
, link = "https://doi.org/10.1001/archinternmed.2011.2287"
}
, { author = "Papier, Keren, et al."
, title = "Meat Consumption and Risk of 25 Common Conditions: Outcome-Wide Analyses in 475,000 Men and Women in the UK Biobank Study"
, journal = "BMC Medicine"
, year = "2021"
, link = "https://doi.org/10.1186/s12916-021-01922-9"
}
, { author = "Papier, Keren, et al."
, title = "Meat Consumption and Risk of Ischemic Heart Disease: A Systematic Review and Meta-Analysis"
, journal = "Critical Reviews in Food Science and Nutrition"
, year = "2021"
, link = "https://doi.org/10.1080/10408398.2021.1949575"
}
, { author = "Larsson, Susanna C., and Nicola Orsini"
, title = "Red Meat and Processed Meat Consumption and All-Cause Mortality: A Meta-Analysis"
, journal = "American Journal of Epidemiology"
, year = "2014"
, link = "https://doi.org/10.1093/aje/kwt261"
}
, { author = ""
, title = "DuhemQuine Thesis"
, journal = "Wikipedia"
, year = "2022"
, link = "https://en.wikipedia.org/w/index.php?title=Duhem%E2%80%93Quine_thesis&oldid=1105377595"
}
, { author = "Schwingshackl, Lukas, et al."
, title = "Evaluating Agreement between Bodies of Evidence from Randomised Controlled Trials and Cohort Studies in Nutrition Research: Meta-Epidemiological Study"
, journal = "BMJ (Clinical Research Ed.)"
, year = "2021"
, link = "https://doi.org/10.1136/bmj.n1864"
}
, { author = ""
, title = "Dietary Protein Quality Evaluation in Human Nutrition. Report of an FAQ Expert Consultation"
, journal = "FAO Food and Nutrition Paper"
, year = "2013"
, link = "https://www.fao.org/ag/humannutrition/35978-02317b979a686a57aa4593304ffc17f06.pdf"
}
, { author = "Nosworthy, Matthew G., et al."
, title = "Determination of the Protein Quality of Cooked Canadian Pulses"
, journal = "Food Science & Nutrition"
, year = "2017"
, link = "https://doi.org/10.1002/fsn3.473"
}
, { author = "Han, Fei, et al."
, title = "Digestible Indispensable Amino Acid Scores (DIAAS) of Six Cooked Chinese Pulses"
, journal = "Nutrients"
, year = "2020"
, link = "https://doi.org/10.3390/nu12123831"
}
, { author = "Fanelli, Natalia S., et al."
, title = "Digestible Indispensable Amino Acid Score (DIAAS) Is Greater in Animal-Based Burgers than in Plant-Based Burgers If Determined in Pigs"
, journal = "European Journal of Nutrition"
, year = "2022"
, link = "https://doi.org/10.1007/s00394-021-02658-1"
}
, { author = "Herreman, Laure, et al."
, title = "Comprehensive Overview of the Quality of Plant And Animalsourced Proteins Based on the Digestible Indispensable Amino Acid Score"
, journal = "Food Science & Nutrition"
, year = "2020"
, link = "https://doi.org/10.1002/fsn3.1809"
}
, { author = "Han, Fei, et al."
, title = "The Complementarity of Amino Acids in Cooked Pulse/Cereal Blends and Effects on DIAAS"
, journal = "Plants (Basel, Switzerland)"
, year = "2021"
, link = "https://doi.org/10.3390/plants10101999"
}
, { author = ""
, title = "PDCAAS Calculator - 2000KCAL"
, journal = ""
, year = ""
, link = "https://www.2000kcal.cz/lang/en/static/protein_quality_and_combining_pdcaas.php"
}
, { author = "Naghshi, Sina, et al."
, title = "Dietary Intake of Total, Animal, and Plant Proteins and Risk of All Cause, Cardiovascular, and Cancer Mortality: Systematic Review and Dose-Response Meta-Analysis of Prospective Cohort Studies"
, journal = "BMJ (Clinical Research Ed.)"
, year = "2020"
, link = "https://doi.org/10.1136/bmj.m2412"
}
, { author = "Budhathoki, Sanjeev, et al."
, title = "Association of Animal and Plant Protein Intake With All-Cause and Cause-Specific Mortality in a Japanese Cohort"
, journal = "JAMA Internal Medicine"
, year = "2019"
, link = "https://doi.org/10.1001/jamainternmed.2019.2806"
}
, { author = "Bouvard, Véronique, et al."
, title = "Carcinogenicity of Consumption of Red and Processed Meat"
, journal = "The Lancet. Oncology"
, year = "2015"
, link = "https://doi.org/10.1016/S1470-2045(15)00444-1"
}
, { author = "Sainani, Kristin L."
, title = "Understanding Odds Ratios"
, journal = "PM & R: The Journal of Injury, Function, and Rehabilitation"
, year = "2011"
, link = "https://doi.org/10.1016/j.pmrj.2011.01.009"
}
, { author = ""
, title = "Cancer Types"
, journal = "Canadian Cancer Society"
, year = ""
, link = "https://cancer.ca/en/cancer-information/cancer-types"
}
, { author = "Huxley, Rachel R., et al."
, title = "The Impact of Dietary and Lifestyle Risk Factors on Risk of Colorectal Cancer: A Quantitative Overview of the Epidemiological Evidence"
, journal = "International Journal of Cancer"
, year = "2009"
, link = "https://doi.org/10.1002/ijc.24343"
}
, { author = "Orlich, Michael J., et al."
, title = "Ultra-Processed Food Intake and Animal-Based Food Intake and Mortality in the Adventist Health Study-2"
, journal = "The American Journal of Clinical Nutrition"
, year = "2022"
, link = "https://doi.org/10.1093/ajcn/nqac043"
}
, { author = "Rowntree, Jason E., et al."
, title = "Ecosystem Impacts and Productive Capacity of a Multi-Species Pastured Livestock System"
, journal = "Frontiers in Sustainable Food Systems"
, year = "2020"
, link = "https://www.frontiersin.org/articles/10.3389/fsufs.2020.544984"
}
, { author = "Hayek, Matthew N., et al."
, title = "The Carbon Opportunity Cost of Animal-Sourced Food Production on Land"
, journal = "Nature Sustainability"
, year = "2021"
, link = "https://doi.org/10.1038/s41893-020-00603-4"
}
, { author = "Peters, Christian J., et al."
, title = "Carrying Capacity of U.S. Agricultural Land: Ten Diet Scenarios"
, journal = "Elementa"
, year = "2016"
, link = "https://doi.org/10.12952/journal.elementa.000116"
}
, { author = "Gan, Yantai, et al."
, title = "Improving Farming Practices Reduces the Carbon Footprint of Spring Wheat Production"
, journal = "Nature Communications"
, year = "2014"
, link = "https://doi.org/10.1038/ncomms6012"
}
, { author = ""
, title = "Grazed and Confused?"
, journal = "Oxford Martin School"
, year = ""
, link = "https://www.oxfordmartin.ox.ac.uk/publications/grazed-and-confused/"
}
, { author = "Fischer, G., et al."
, title = "Global Agro-Ecological Zones (GAEZ v3.0)- Model Documentation"
, journal = ""
, year = "2012"
, link = "http://www.fao.org/soils-portal/soil-survey/soil-maps-and-databases/harmonized-world-soil-database-v12/en/"
}
, { author = "Mottet, Anne, et al."
, title = "Livestock: On Our Plates or Eating at Our Table? A New Analysis of the Feed/Food Debate"
, journal = "Global Food Security"
, year = "2017"
, link = "https://doi.org/10.1016/j.gfs.2017.01.001"
}
, { author = ""
, title = "Carbon Footprint Evaluation of Regenerative Grazing At White Oak Pastures: Results Presentation"
, journal = "Quantis - Environmental Sustainability Consultancy"
, year = ""
, link = "https://blog.whiteoakpastures.com/hubfs/WOP-LCA-Quantis-2019.pdf"
}
, { author = "Hayek, Matthew N., and Rachael D. Garrett"
, title = "Nationwide Shift to Grass-Fed Beef Requires Larger Cattle Population"
, journal = "Environmental Research Letters"
, year = "2018"
, link = "https://doi.org/10.1088/1748-9326/aad401"
}
, { author = "Tew, T. E., and D. W. Macdonald"
, title = "The Effects of Harvest on Arable Wood Mice Apodemus Sylvaticus"
, journal = "Biological Conservation"
, year = "1993"
, link = "https://doi.org/10.1016/0006-3207(93)90060-E"
}
, { author = "Tucker, Marlee A., et al."
, title = "Mammal Population Densities at a Global Scale Are Higher in Humanmodified Areas"
, journal = "Ecography"
, year = "2021"
, link = "https://doi.org/10.1111/ecog.05126"
}
]
}

1572
frontend/src/Config/Pages/Blog/Records/SeedOils.elm Normal file → Executable file

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,7 @@
module Config.Pages.Blog.Types exposing (..)
import Config.Helpers.References exposing (..)
type alias BlogArticle =
{ articleName : String
@ -10,4 +12,5 @@ type alias BlogArticle =
, isNewTabLink : Bool
, articlePublished : String
, articleDescription : String
, articleReferences : List References
}

View file

@ -1,5 +1,7 @@
module Config.Pages.Products.Types exposing (..)
import Config.Helpers.References exposing (..)
type alias NutriDex =
{ nutriDexTitle : String
@ -12,12 +14,3 @@ type alias Features =
{ feature : String
, featureTitle : String
}
type alias References =
{ author : String
, title : String
, link : String
, year : String
, journal : String
}

View file

@ -34,6 +34,9 @@ import Config.Helpers.Response
, topLevelContainer
)
import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Blog.Records.HunterGatherers exposing (articleHunterGatherers)
import Config.Pages.Blog.Records.NagraGoodrich exposing (articleNagraGoodrich)
import Config.Pages.Blog.Records.SapienDiet exposing (articleSapienDiet)
import Config.Pages.Blog.Records.SeedOils exposing (articleSeedOils)
import Config.Pages.Blog.Types exposing (..)
import Config.Style.Colour as T exposing (..)
@ -149,7 +152,11 @@ blogList device =
_ ->
List.map desktopBlogMaker
)
[ articleSeedOils ]
[ articleNagraGoodrich
, articleSapienDiet
, articleSeedOils
, articleHunterGatherers
]
]
@ -175,7 +182,7 @@ desktopBlogMaker article =
[ cardContentSpacing
[ column
fieldSpacer
[ seedOilMaker article ]
[ articleMaker article ]
]
]
]
@ -197,7 +204,7 @@ mobileBlogMaker article =
[ mobileCardMaker mobileImageBoxSize mobileImageSize (articleImage article) article.articleLink
, column
[ width fill ]
[ seedOilMaker article ]
[ articleMaker article ]
]
]
]
@ -213,19 +220,19 @@ articleImage :
, description : String
}
articleImage article =
{ src = "blog/" ++ article.articleImage ++ ".png"
{ src = "blog/" ++ article.articleImage ++ "thumb.png"
, description = article.articleName
}
seedOilMaker : BlogArticle -> Element msg
seedOilMaker article =
articleMaker : BlogArticle -> Element msg
articleMaker article =
column
[ E.width fill
, centerX
]
[ column [ width fill ]
(seedOilRows article
(articleRows article
++ [ row []
[ paragraph
[ F.color colourTheme.textLightGrey
@ -273,9 +280,10 @@ infoRow label value =
]
seedOilRows : BlogArticle -> List (Element msg)
seedOilRows article =
articleRows : BlogArticle -> List (Element msg)
articleRows article =
[ infoRow "Author:" article.articleAuthor
, infoRow "Published:" article.articlePublished
, infoRow "Duration:" (String.fromInt (wordCount article.articleBody // 225) ++ " minutes")
, infoRow "Word Count:" (String.fromInt (wordCount article.articleBody))
]

View file

@ -0,0 +1,195 @@
module Pages.Blog.Huntergatherers exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames)
import Config.Helpers.CardFormat
exposing
( cardContentSpacing
, cardFormatter
, cardMaker
, cardSubTitleMaker
, cardTitleMaker
, desktopCardMaker
, desktopImageBoxSize
, desktopImageSize
, fieldSpacer
, mobileCardMaker
, mobileImageBoxSize
, mobileImageSize
, topLevelBox
)
import Config.Helpers.Format exposing (..)
import Config.Helpers.Header
exposing
( Header
, headerMaker
)
import Config.Helpers.Markdown exposing (..)
import Config.Helpers.References exposing (makeReference)
import Config.Helpers.Response
exposing
( pageList
, topLevelContainer
)
import Config.Helpers.StrengthBar
exposing
( barMaker
, barPadding
)
import Config.Helpers.ToolTip exposing (..)
import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Blog.Records.HunterGatherers exposing (articleHunterGatherers)
import Config.Pages.Blog.Types exposing (BlogArticle)
import Config.Pages.Contact.Types exposing (..)
import Config.Pages.Interviews.Types exposing (..)
import Config.Pages.Products.Types exposing (..)
import Config.Style.Colour exposing (colourTheme)
import Config.Style.Transitions
exposing
( hoverFontDarkOrange
, transitionStyleFast
, transitionStyleSlow
)
import Effect exposing (Effect)
import Element as E exposing (..)
import Element.Background as B
import Element.Border as D
import Element.Font as F
import Html
import Html.Attributes as H exposing (style)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
import Shared exposing (..)
import View exposing (View)
page : Shared.Model -> Route () -> Page Model Msg
page shared route =
Page.new
{ init = init
, update = update
, subscriptions = subscriptions
, view = view shared
}
|> Page.withLayout toLayout
toLayout : Model -> Layouts.Layout Msg
toLayout model =
Layouts.Navbar {}
-- INIT
type alias Model =
{}
init : () -> ( Model, Effect Msg )
init () =
( {}
, Effect.none
)
-- UPDATE
type Msg
= NoOp
update : Msg -> Model -> ( Model, Effect Msg )
update msg model =
case msg of
NoOp ->
( model
, Effect.none
)
-- SUBSCRIPTIONS
subscriptions : Model -> Sub Msg
subscriptions model =
Sub.none
-- VIEW
view : Shared.Model -> Model -> View Msg
view shared model =
{ title = pageNames.pageHyperBlog ++ " (hunterGatherers)"
, attributes = []
, element = articleContainer shared.device
}
articleContainer : Device -> Element msg
articleContainer device =
topLevelContainer (articleList device)
articleList : Device -> Element msg
articleList device =
column
(case ( device.class, device.orientation ) of
_ ->
pageList
)
<|
List.concat
[ (case ( device.class, device.orientation ) of
_ ->
List.map articleMaker
)
[ articleHunterGatherers ]
]
articleMaker : BlogArticle -> Element msg
articleMaker article =
column
topLevelBox
[ cardMaker
[ cardTitleMaker (String.toUpper articleHunterGatherers.articleName)
, cardFormatter
[ cardContentSpacing
[ column
fieldSpacer
[ cardSubTitleMaker
[ articleImage articleHunterGatherers.articleImage
, renderDeviceMarkdown articleHunterGatherers.articleBody
, articleReferences article
]
]
]
]
]
]
articleReferences : BlogArticle -> Element msg
articleReferences article =
column
[ width fill
, height fill
, paddingEach
{ top = 10
, right = 0
, bottom = 0
, left = 0
}
]
[ column [ width fill, F.size 15, spacing 10 ] <|
List.map2 (\x y -> makeReference x y)
article.articleReferences
(List.range 1 (List.length article.articleReferences))
]

View file

@ -0,0 +1,194 @@
module Pages.Blog.Nagragoodrich exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames)
import Config.Helpers.CardFormat
exposing
( cardContentSpacing
, cardFormatter
, cardMaker
, cardSubTitleMaker
, cardTitleMaker
, desktopCardMaker
, desktopImageBoxSize
, desktopImageSize
, fieldSpacer
, mobileCardMaker
, mobileImageBoxSize
, mobileImageSize
, topLevelBox
)
import Config.Helpers.Format exposing (..)
import Config.Helpers.Header
exposing
( Header
, headerMaker
)
import Config.Helpers.Markdown exposing (..)
import Config.Helpers.References exposing (makeReference)
import Config.Helpers.Response
exposing
( pageList
, topLevelContainer
)
import Config.Helpers.StrengthBar
exposing
( barMaker
, barPadding
)
import Config.Helpers.ToolTip exposing (..)
import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Blog.Records.NagraGoodrich exposing (articleNagraGoodrich)
import Config.Pages.Blog.Types exposing (BlogArticle)
import Config.Pages.Contact.Types exposing (..)
import Config.Pages.Interviews.Types exposing (..)
import Config.Pages.Products.Types exposing (..)
import Config.Style.Colour exposing (colourTheme)
import Config.Style.Transitions
exposing
( hoverFontDarkOrange
, transitionStyleFast
, transitionStyleSlow
)
import Effect exposing (Effect)
import Element as E exposing (..)
import Element.Background as B
import Element.Border as D
import Element.Font as F
import Html
import Html.Attributes as H exposing (style)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
import Shared exposing (..)
import View exposing (View)
page : Shared.Model -> Route () -> Page Model Msg
page shared route =
Page.new
{ init = init
, update = update
, subscriptions = subscriptions
, view = view shared
}
|> Page.withLayout toLayout
toLayout : Model -> Layouts.Layout Msg
toLayout model =
Layouts.Navbar {}
-- INIT
type alias Model =
{}
init : () -> ( Model, Effect Msg )
init () =
( {}
, Effect.none
)
-- UPDATE
type Msg
= NoOp
update : Msg -> Model -> ( Model, Effect Msg )
update msg model =
case msg of
NoOp ->
( model
, Effect.none
)
-- SUBSCRIPTIONS
subscriptions : Model -> Sub Msg
subscriptions model =
Sub.none
-- VIEW
view : Shared.Model -> Model -> View Msg
view shared model =
{ title = pageNames.pageHyperBlog ++ " (NagraGoodrich)"
, attributes = []
, element = articleContainer shared.device
}
articleContainer : Device -> Element msg
articleContainer device =
topLevelContainer (articleList device)
articleList : Device -> Element msg
articleList device =
column
(case ( device.class, device.orientation ) of
_ ->
pageList
)
<|
List.concat
[ (case ( device.class, device.orientation ) of
_ ->
List.map articleMaker
)
[ articleNagraGoodrich ]
]
articleMaker : BlogArticle -> Element msg
articleMaker article =
column
topLevelBox
[ cardMaker
[ cardTitleMaker (String.toUpper articleNagraGoodrich.articleName)
, cardFormatter
[ cardContentSpacing
[ column
fieldSpacer
[ cardSubTitleMaker
[ articleImage articleNagraGoodrich.articleImage
, renderDeviceMarkdown articleNagraGoodrich.articleBody
]
]
]
]
]
]
articleReferences : BlogArticle -> Element msg
articleReferences article =
column
[ width fill
, height fill
, paddingEach
{ top = 10
, right = 0
, bottom = 0
, left = 0
}
]
[ column [ width fill, F.size 15, spacing 10 ] <|
List.map2 (\x y -> makeReference x y)
article.articleReferences
(List.range 1 (List.length article.articleReferences))
]

View file

@ -0,0 +1,195 @@
module Pages.Blog.Sapiendiet exposing (Model, Msg, page)
import Config.Data.Identity exposing (pageNames)
import Config.Helpers.CardFormat
exposing
( cardContentSpacing
, cardFormatter
, cardMaker
, cardSubTitleMaker
, cardTitleMaker
, desktopCardMaker
, desktopImageBoxSize
, desktopImageSize
, fieldSpacer
, mobileCardMaker
, mobileImageBoxSize
, mobileImageSize
, topLevelBox
)
import Config.Helpers.Format exposing (..)
import Config.Helpers.Header
exposing
( Header
, headerMaker
)
import Config.Helpers.Markdown exposing (..)
import Config.Helpers.References exposing (makeReference)
import Config.Helpers.Response
exposing
( pageList
, topLevelContainer
)
import Config.Helpers.StrengthBar
exposing
( barMaker
, barPadding
)
import Config.Helpers.ToolTip exposing (..)
import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Blog.Records.SapienDiet exposing (articleSapienDiet)
import Config.Pages.Blog.Types exposing (BlogArticle)
import Config.Pages.Contact.Types exposing (..)
import Config.Pages.Interviews.Types exposing (..)
import Config.Pages.Products.Types exposing (..)
import Config.Style.Colour exposing (colourTheme)
import Config.Style.Transitions
exposing
( hoverFontDarkOrange
, transitionStyleFast
, transitionStyleSlow
)
import Effect exposing (Effect)
import Element as E exposing (..)
import Element.Background as B
import Element.Border as D
import Element.Font as F
import Html
import Html.Attributes as H exposing (style)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
import Shared exposing (..)
import View exposing (View)
page : Shared.Model -> Route () -> Page Model Msg
page shared route =
Page.new
{ init = init
, update = update
, subscriptions = subscriptions
, view = view shared
}
|> Page.withLayout toLayout
toLayout : Model -> Layouts.Layout Msg
toLayout model =
Layouts.Navbar {}
-- INIT
type alias Model =
{}
init : () -> ( Model, Effect Msg )
init () =
( {}
, Effect.none
)
-- UPDATE
type Msg
= NoOp
update : Msg -> Model -> ( Model, Effect Msg )
update msg model =
case msg of
NoOp ->
( model
, Effect.none
)
-- SUBSCRIPTIONS
subscriptions : Model -> Sub Msg
subscriptions model =
Sub.none
-- VIEW
view : Shared.Model -> Model -> View Msg
view shared model =
{ title = pageNames.pageHyperBlog ++ " (sapienDiet)"
, attributes = []
, element = articleContainer shared.device
}
articleContainer : Device -> Element msg
articleContainer device =
topLevelContainer (articleList device)
articleList : Device -> Element msg
articleList device =
column
(case ( device.class, device.orientation ) of
_ ->
pageList
)
<|
List.concat
[ (case ( device.class, device.orientation ) of
_ ->
List.map articleMaker
)
[ articleSapienDiet ]
]
articleMaker : BlogArticle -> Element msg
articleMaker article =
column
topLevelBox
[ cardMaker
[ cardTitleMaker (String.toUpper articleSapienDiet.articleName)
, cardFormatter
[ cardContentSpacing
[ column
fieldSpacer
[ cardSubTitleMaker
[ articleImage articleSapienDiet.articleImage
, renderDeviceMarkdown articleSapienDiet.articleBody
, articleReferences article
]
]
]
]
]
]
articleReferences : BlogArticle -> Element msg
articleReferences article =
column
[ width fill
, height fill
, paddingEach
{ top = 10
, right = 0
, bottom = 0
, left = 0
}
]
[ column [ width fill, F.size 15, spacing 10 ] <|
List.map2 (\x y -> makeReference x y)
article.articleReferences
(List.range 1 (List.length article.articleReferences))
]

39
frontend/src/Pages/Blog/Seedoils.elm Normal file → Executable file
View file

@ -24,6 +24,7 @@ import Config.Helpers.Header
, headerMaker
)
import Config.Helpers.Markdown exposing (..)
import Config.Helpers.References exposing (makeReference)
import Config.Helpers.Response
exposing
( pageList
@ -37,6 +38,7 @@ import Config.Helpers.StrengthBar
import Config.Helpers.ToolTip exposing (..)
import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Blog.Records.SeedOils exposing (articleSeedOils)
import Config.Pages.Blog.Types exposing (BlogArticle)
import Config.Pages.Contact.Types exposing (..)
import Config.Pages.Interviews.Types exposing (..)
import Config.Pages.Products.Types exposing (..)
@ -137,16 +139,23 @@ articleContainer device =
articleList : Device -> Element msg
articleList device =
column pageList <|
List.concat
column
(case ( device.class, device.orientation ) of
_ ->
[ [ articleMaker ] ]
pageList
)
<|
List.concat
[ (case ( device.class, device.orientation ) of
_ ->
List.map articleMaker
)
[ articleSeedOils ]
]
articleMaker : Element msg
articleMaker =
articleMaker : BlogArticle -> Element msg
articleMaker article =
column
topLevelBox
[ cardMaker
@ -158,9 +167,29 @@ articleMaker =
[ cardSubTitleMaker
[ articleImage articleSeedOils.articleImage
, renderDeviceMarkdown articleSeedOils.articleBody
, articleReferences article
]
]
]
]
]
]
articleReferences : BlogArticle -> Element msg
articleReferences article =
column
[ width fill
, height fill
, paddingEach
{ top = 10
, right = 0
, bottom = 0
, left = 0
}
]
[ column [ width fill, F.size 15, spacing 10 ] <|
List.map2 (\x y -> makeReference x y)
article.articleReferences
(List.range 1 (List.length article.articleReferences))
]

View file

@ -6,17 +6,17 @@ import Config.Helpers.Format
( paragraphFontSize
, paragraphSpacing
)
import Config.Helpers.Header
exposing
( Header
, headerMaker
)
import Config.Helpers.Response
exposing
( pageListCenter
, topLevelContainer
)
import Config.Helpers.Viewport exposing (resetViewport)
import Config.Helpers.Header
exposing
( Header
, headerMaker
)
import Config.Style.Colour exposing (colourTheme)
import Config.Style.Glow exposing (glowDeepDarkGrey)
import Config.Style.Icons.Icons

View file

@ -22,6 +22,8 @@ import Config.Helpers.Format
( paragraphFontSize
, paragraphSpacing
)
import Config.Helpers.Header exposing (..)
import Config.Helpers.References exposing (..)
import Config.Helpers.Response
exposing
( pageList
@ -34,12 +36,6 @@ import Config.Helpers.StrengthBar
)
import Config.Helpers.ToolTip exposing (tooltip)
import Config.Helpers.Viewport exposing (resetViewport)
import Config.Helpers.Header exposing (..)
import Config.Helpers.Header
exposing
( Header
, headerMaker
)
import Config.Pages.Products.Records.NutriDex exposing (productNutriDex)
import Config.Pages.Products.Types exposing (..)
import Config.Style.Colour exposing (colourTheme)
@ -434,7 +430,7 @@ nutriDexTitleMaker title =
[ width fill
, centerX
, D.widthEach { bottom = 1, top = 0, left = 0, right = 0 }
, D.color (rgb255 200 200 200)
, D.color colourTheme.textLightOrange
, paddingEach { top = 40, bottom = 0, left = 0, right = 0 }
]
[]
@ -1119,7 +1115,7 @@ nutriDexReferenceTitleMaker =
[ width fill
, centerX
, D.widthEach { bottom = 1, top = 0, left = 0, right = 0 }
, D.color (rgb255 200 200 200)
, D.color colourTheme.textLightOrange
, paddingEach { top = 40, bottom = 0, left = 0, right = 0 }
]
[]

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 879 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 614 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 829 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 782 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 292 KiB

0
frontend/static/blog/seedoils.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 1,021 KiB

After

Width:  |  Height:  |  Size: 1,021 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 68 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 53 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 114 KiB

After

Width:  |  Height:  |  Size: 114 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 78 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 108 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 146 KiB

After

Width:  |  Height:  |  Size: 146 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 185 KiB

After

Width:  |  Height:  |  Size: 185 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 197 KiB

After

Width:  |  Height:  |  Size: 197 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 201 KiB

After

Width:  |  Height:  |  Size: 201 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 51 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 60 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 89 KiB

After

Width:  |  Height:  |  Size: 89 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 84 KiB

After

Width:  |  Height:  |  Size: 84 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 84 KiB

After

Width:  |  Height:  |  Size: 84 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 352 KiB

After

Width:  |  Height:  |  Size: 352 KiB

Before After
Before After

Some files were not shown because too many files have changed in this diff Show more