The relationship between dairy/meat and inflammation is more nuanced than that. While some studies show associations with inflammatory markers, others find neutral or even anti-inflammatory effects depending on the type (e.g., grass-fed vs grain-fed, fermented vs non-fermented dairy) and individual metabolic context.
You're right that ratios matter enormously, but optimal ratios vary significantly by individual - genetics, activity level, metabolic health, and existing conditions all play roles. The overconsumption concern is valid for processed meats and in the context of sedentary lifestyles with excess calories, but the picture is less clear for whole-food animal proteins in balanced diets.
The real issue might be less about meat/dairy per se and more about displacement of other beneficial foods (fiber, polyphenols, etc) and overall dietary patterns. Many Americans do overconsume calories generally, but some subpopulations (elderly, athletes, those on restricted diets) may actually benefit from more protein.
why is meat inflammatory? is it they way it's farmed/raised?
because we have teeth specifically designed to get meat off bones and animals that don't eat meat and weren't "designed to" don't have teeth designed to clean meat off bones. and that's just one i came up with, off the cuff.
if it's current farming practices that make the meat/dairy bad for us, then fix that. But i don't currently believe there's a greater health benefit to taking a ton of supplements to replace the missing nutrients that meat and dairy give us that you absolutely cannot get from vegan diets without it becoming a monotonous pain in the neck.
> why is meat inflammatory? is it they way it's farmed/raised?
Not all meats are inflammatory. Processed and high temp cooked meats especially red are.
And I don't think we have the answer fully to why, but we know the lesser processed it is the better, and I believe I've seen some things about grass fed and all these more organically/traditional made meats seem to not be as inflammatory.
Also, we evolved during a period where we hunted, so even the idea of farmed meet maybe isn't really part of our evolution. But also, during our hunting evolution, we likely didn't have meat at every meals. Plus if you ever had game meat, it tastes really different and often isn't as good as what we farmed. So we kind of came to farm what tasted the best and was easy to farm, so it might be those meats aren't as good for us.
Also, you can't always assume that the environment we evolved in and the "natural" state is good for us. It wasn't bad enough for us to dwindle in numbers, but our population count was kept much lower than now and our life expectancies were shorter. As long as we made it to a healthy reproduction state evolution doesn't care. So all these inflammatory issues appear starting in your 30s and really become a problem much later in life. It's possible this didn't matter in evolutionary terms.
Lastly, you also have to take into context what else we'd do/eat. If our diets were more balanced than other things we would eat could neutralize some of that inflammation and meat has other vitamins and nutrients that are benefitial, but if someone cuts those other things out of their diet now the inflammation could become a problem.
Good stuff here. To add to your point: atherosclerosis actually begins development as early as childhood, but you only suffer 40 or 50 years down the line once you're hit with a stroke or a heart attack. Evolution didn't act on this!
Some herbivores too have huge canines[0] for territorial fights. I used to use mine to fight my brother but now I'm settled they only help tearing appart coconut, cowliflower and seitan.
You can get all the nutrients you need, easily, from a vegan diet, with the exception of B12 (a cheap supplement will cover that).
Also, human ‘canines’ are pretty pathetic. They’ll do the job in getting meat off bones, sure, but are nothing compared with my dog’s teeth – he has proper canines. (He also doesn’t have to prepare and cook meat before tucking in. Humans are actually pretty lame meat eaters even in comparison to other omnivores like dogs, let alone carnivores like lions.)
vitamin D? unless you live within 10 degrees of the equator "the sun" is not a valid answer.
The most available form of vitamin D comes from extracting the oil from sheep's wool/skin using chemicals (soap is a chemical, for the record.) Yes, it is possible to get a much weaker form of D from mushrooms, but not as they arrive, regardless of packaging. they have to be left outside in the sun for at least 8 hours, but ideally "two full days in the sun", cap-side up (facing the sun), and then a standard mushroom will have enough D2 for the average adult, maybe. I don't know the specific conversion from D2 to calciferol or whatever.
And before anyone decides to cite 30ng/ml or whatever as "recommended", i disagree, 90-105ng/ml is more "ideal" and 500IU of vitamin D supplements aren't going to cut it. it's 1 IU per 10 grams of body mass (roughly).
i can do this all day, it's a waste of both of our time. As lovely as vegetarian/veganism is in the abstract, the entire planet cannot be vegan any more than the entire planet can subsist off insects.
My vegan diet involves a lot of beans, rice, ..., which all require considerably less input than meat does. A bag of beans costs so very little, lasts so long, and is healthy. Meat and dairy are luxuries that come at the cost of pretty horrific treatment for a great number of animals.
Can you name which EXACT nutrients you "absolutely cannot get from vegan diets without it becoming a monotonous pain in the neck"? A daily multivitamin isn't hard.
I think generally people are optimizing for health outcome and longevity, not peak athletic performance at your prime age.
But also, I've seen people often assume vegetarian or vegan diets are "healthy". But many people in India for example will still eat a lot of refined carbs, added sugars, fat heavy deep fried foods, large volumes of ghee or seed oils, etc. And total avoidance of animal products can also mean you have some deficiencies in nutrients that can be hard to obtain otherwise.
A plant-forward diet is more specific, like the Mediterranean diet, which itself isn't at all how your average Mediterranean person eats haha. But it involves no processed foods, no added sugar or excessive sugar, diverse set of nutrients by eating a balance of veggies, legumes, nuts, seeds, meats, dairy, fish, and so on all in appropriate proportions, as well as keeping overall caloric intake relatively low.
It's quite hard to eat that way to be honest haha.
Meat and dairy contain the bulk of the saturated fat in the average diet. It's pretty absurd to imagine a diet in which the largest food group is just meat and dairy, but due to the ordering, that almost seems to be implied.
The saturated fat → LDL-C → heart disease relationship has a lot of evidence and history behind it. A very interesting research project if you needed one. I call this advisory a "downgrade" because heart attack and stroke (among other conditions) are both: 1) downstream of saturated fat consumption, and 2) the most prevalent causes of death among people in the developed world.
It also very prominently shows red meat, which is the worst you can do.
fish > poultry > red meat. (Fish and poultry can be swapped, mercury is a real problem).
But really if you are looking for the healthiest proteins then you really can't do much better than nuts and beans.
Red meat beyond having a lot of links to heart disease is also linked to cancer. It should be seen as a treat, not the main thing you should be consuming.
Yup, there's a hole in our data that they appear to be exploiting. Early studies of saturated fat showed it was unhealthy, but then larger, longer studies found nothing. Were the first studies wrong? Or is the problem that we no longer have a control group--people responded to the news by cutting back on saturated fat?
One thing I think we should better emphasize is that it's best to avoid foods that are bad for you, than to eat foods that are good for you. If you can't do both, you should focus on cutting out bad foods over eating healthier foods.
Meat (non-processed, no sugary sauce or gravy), and dairy (plain, fermented, no added sugar). Those are kind of "neutral" foods. If that's all you eat, meaning you don't eat any crap, you're much better off health wise than if you eat crap and try to also eat a bunch of veggies, fish, fruits, legumes, etc.
That's unhealthy and honestly gross. Maybe you have the genes -- there are smokers who make it to 100! -- but you should adjust your diet for your own sake. I wouldn't bet on being an outlier.
I don’t believe there is any solid scientific reason to change my diet. Indeed I’d say there is mild evidence otherwise. I think the main issue is being turning this into a moralizing issue.
I agree, but I think LLM-based voice input is a lot better. I’m using OpenAI’s realtime API for my Apple Watch app, and it does wonders, even editing can be as simple as “add a heart emoji at the end”, and it just works.
It's the same sort of bug that killed that Mars mission and the same reason some people insist on keyword parameters instead of ordered parameters. People make mistakes, and implicit conversions allow those mistakes to silently propagate. Given how easy it is to strongly type everything and use explicit conversions, the default for most nontrivial software should be closer to TFA rather than allowing implicit conversions or overloading the semantics of a type.
GIS are particularly prone to these sort of human caused accidents. Example is that some GIS take coordinate input as LatLon and some take LonLat.
Another good example is that very often when working with GIS you collate data from multiple sources, as a sibling comment indicates. These sources may be available in all sorts of different coordinate systems and projections and it’s extremely easy to get bad results that are difficult to verify they are bad by these types of bugs.
The Mars Climate Orbiter failed because an input was given in Newtons but expected in pounds, and the type of the variables was the same (float or whatever), so the compiler could not detect or prevent the error.
The root cause was using the same types for incompatible data, which allowed operations which should have been illegal.
If the variables had different types, then the compiler could use implicit conversion to automatically convert Newtons to pounds, and failure would be averted.
Implicit conversion does not allow mistakes to "silently propagate". It prevents the mistake in the first place.
> You don't understand what implicit conversion is.
Please be nice, and check the site guidelines [0] if it's not obvious what the problem with that phrasing is.
Yes, implicit conversions are narrowly defined to be the thing you describe. Along with overloaded types and positional arguments, they all have the same properties I outlined -- the compiler can't protect you from minor typos, that error will tend to propagate far from the erroneous callsite, and there are relatively easy coding patterns to alleviate those issues. I thought those examples might be more familiar to enough people that it would give their brains something to latch on to when considering the problems with implicit conversions.
And we seem to disagree on this point, but IME implicit conversions cause many more bugs than they fix. A smattering of examples:
1. You can't implicitly narrow a numeric type without losing precision.
2. You can't implicitly narrow types in general without losing data or having some sort of error handling system, or having some sort of compile-time guarantee that the conversion is safe for this specific instance of the wider type. Without a very advanced compiler (even then, not for every problem), this will manifest as runtime errors and crashes.
3. You can't implicitly widen a numeric type without opening up yourself to all sorts of bugs. E.g., when evaluating `data & mask` you likely don't want the mask to be implicitly widened to the size of the data, unless you got especially lucky and were only extracting the low bits. Those sorts of problems are very common with integers, but floating-point widening is similarly dangerous from time to time.
4. You often shouldn't implicitly widen types in general because there usually isn't a good default state for the missing data. In the mask example from (3), the problem is that we don't know what the missing bits ought to be in the context of this particular problem, but that same problem manifests with class hierarchies and any other way you might represent converting a smaller type to a larger type.
Your example of implicitly converting between "equivalent" types is perhaps the best use case, and by far the one I have the fewest problems with. It's still not flawless though, and it's not safer than having two separate types while requiring explicit conversions.
Implicit conversions in general are a very common source of bugs. C(++) implicit widening and narrowing and other such things have bitten me quite a few time. Instead of asking "why not allow" you should instead ask "why allow" and only implement such things when there is a compelling case for it.
I'll throw a bit more flavour in with the sibling comment talking about transposing x and y.
The system I work on every day has:
- multiple GPS receivers that report latitude, longitude, altitude (MSL) and altitude (HAE)
- an interface to some GeoJSON data where coordinates are stored as longitude, latitude
- a geographically-local Cartesian coordinate frame that is an AEP (Azimuthal Equidistance Projection) with a latitude/longitude origin. The "XYZ" axes of this frame are a NED frame (north, east, down)
- an aircraft-local Cartesian frame with FRD (forward, right, down) axes
- an interface that provides map tiles with zoom/x/y coordinates
- a bunch of other sensors mounted on the aircraft that have their own FRD frames, except the camera which has an RDF (right, down, forward) frame because... reasons.
- terrain RADAR units mounted on the aircraft at specific FRD locations that provide AGL (above ground level) measurements independent of their rotation (the aircraft can be 20 degrees nose-up and we still get a measurement straight down to the ground)
- terrain LIDAR units mounted on the aircraft at specific FRD locations and orientations that provide a straight-line measurement to the ground - if we're over flat ground and the aircraft is 20 degrees nose-up, these report AGL/cos(20 deg)
Keeping track of what frame everything is in is... a daunting task and we've definitely had bugs due to accidentally using a coordinate from the wrong frame. I've been deep into a bunch of this code this week and have been strongly considering doing a zero-cost abstraction similar to what Sguaba is doing, but for C++. I'm pretty sure that we could do it using templates and type tags without really changing any of the underlying math and without implementing a bunch of custom operators but I'm not 100% convinced of that yet.
Another related issue that I don't think is addressed by Sguaba is time. We're hopefully going to get everything standardized to PTP timestamps everywhere but currently all of these sensors are running on unsynchronized clocks and we also have to be careful about keeping track of the origin of a given timestamp and making sure to convert it into the right scale before using it.
The technique described keeps you, as a programmer, from transposing coordinate variables by type system enforcement. You might have variables x1, y1, x2, y2. If y1 and y2 have a different type than x1 and x2, it's much harder to transpose them. Large flying vehicles often have many coordinate systems. Enforcing types will keep you from using stage 1 variables in a stage 2 context without type conversion.
I left the aerospace industry in 1992. Before that, I did some work with a program called "BOSOR5" - "Buckling of Shells of Revolution" (https://shellbuckling.com/BOSOR5.php). The X,Y coordinates appears as Y,X in the output. Very confusing, lots of problems because everyone habitually reads X first, then Y, left-to-right.
Imagine how much trouble it was to work on a Saturn 5: https://oikofuge.com/coordinate-axes-apollo-saturn-1/ If you have a type system with different types for all the axes, you will incur far fewer programming-domain errors.
So the reason _why_ we want the code to be explicit is that we want to be explicit always of the coordinate system we are in. Otherwise _extremely_ hard to find bugs can and will creep in - a float is a float.
The stuff I worked on input coordinates were left handed but the output coordinates were right handed.
That's not what is happening here. With this software there are no raw floats; all variables are typed by the kind of coordinate system (WGS84, ECEF, etc.)
Using your example, the variables would be typed by left- or right-handed. So it is impossible to mix them up, e.g., perform some illegal operation combining them.
Whether implicit conversion is allowed is just saying, does the programmer have to call a function to convert type A -> B, or can the compiler do that for them?
For example,
void doFoo(LeftHandedVec3 v);
RightHandedVec3 myData;
// With explicit conversion.
doFoo(convertToLeftHanded(myData));
// With implicit conversion.
doFoo(myData);
I couldn’t agree more, and this is the reason why I built some apps for the Apple Watch that I was missing: first a keyboard app (before it came built-in with watchOS), a Notes app (there’s still no official app), and most recently a ChatGPT Voice Mode app -- I now feel like I’m carrying a productivity powerhouse on my wrist!