MoreRSS

site iconDynomightModify

Dynomight is a SF-rationalist-substack-adjacent blogger with a good understanding of statistics.
Please copy the RSS to your reader, or quickly subscribe to:

Inoreader Feedly Follow Feedbin Local Reader

Rss preview of Blog of Dynomight

So you want to use plants to reduce indoor CO₂

2026-07-30 08:00:00

Humans make carbon dioxide. Carbon dioxide is (edit: sometimes claimed to be) bad for cognition. But plants turn carbon dioxide back into oxygen. And plants are the one true home decoration strategy. So maybe if you get a lot of plants, you can you can keep carbon dioxide in check and keep your brain working?

It’s theoretically possible. It’s probably just barely possible in practice. But it won’t be easy.

People produce ~1 kilogram of carbon dioxide per day. That’s around 5.7 × 10²³ molecules or 0.948 moles per hour. (You may remember from high school that a mole is a gigantic number made up to avoid having factors of 10²³ everywhere.) Let’s keep it simple and call it one mole per hour.

Meanwhile, plants turn carbon dioxide into oxygen through photosynthesis, i.e. the chemical reaction of (6 water molecules) + (6 carbon dioxide molecules) + (energy) → (1 glucose molecule) + (6 oxygen molecules). The minimum energy physically needed to convert 1 mole of carbon dioxide into glucose and oxygen via this reaction is ~477 kilojoules.

So we’ve already got a lower bound. Say you have magical plants that somehow channel all incoming energy into photosynthesis with perfect efficiency. They’ll need ~477 kilojoules per hour, which converts to a continuous usage of 132.5 watts.1 That’s a bit more than what’s used by two incandescent light bulbs, which isn’t too bad.

But you don’t have magical plants. Real plants do photosynthesis through a physical process with two steps, each of which involves four electrons absorbing a photon. That means you need eight photons per carbon dioxide molecule. If you want to tune your lights for maximum efficiency, you should give each photon exactly the minimum energy necessary to excite an electron, which happens to be ~1.8 eV. That corresponds to pure red light with a wavelength of 680 nm, and a continuous usage of 386 watts.2 No physical system using chloroplasts can neutralize your CO₂ using less than that. Somewhat high, but still manageable.

But your houseplants won’t be able to grab every single photon that hits them and direct it towards photosynthesis. In practice, ~30% of photons will reflect off the plant, or go through it, or hit some part of the plant other than the chloroplasts. That brings us to 551 watts.3

And there’s another issue. After plants make glucose, what happens to it? Some is used to grow more plant, which permanently sequesters carbon from the environment. But lots is also burned by the plant for the general business of staying alive, releasing the carbon back into the air. The exact amount burned in this way varies based on species and conditions, but around 40% loss reasonable,4 bringing us to 918 watts.5

That doesn’t sound that bad. But have you considered what it would be like to live in the same room with 918 watts of pure red light? In terms of radiant power, that’s the same as produced by ~765 incandescent lightbulbs.6 Modern LED grow bulbs are ~50% efficient, meaning you’ll actually need to spend ~1836 watts. If you’re imagining plants that you can actually see, adjust that upwards again for all the light lost to the room. And if you want to use normal light frequencies instead of living Red Life, then your LED bulbs will be less efficient at creating light and your plants will be less efficient at capturing it. Realistically, we’re talking about something like 5,000-10,000 watts, most of which is lost to the room as heat. Imagine five space heaters blasting you on high all the time.

But maybe you’re OK living in a tanning booth. Or maybe you’ll keep your plants in a perfectly reflective chamber. Or maybe your house has a glass ceiling and infinite free sunlight and free climate control. That’s cool. But have you forgotten about your old friend, photosynthetic photon flux density?

Plants can’t absorb infinite amounts of light. Chloroplasts take time to “reset” before they can absorb more photons. Your pet fern can only absorb ~52 watts of energy per square meter of leaf surface area.7 So no matter how much light you can produce, if you want to neutralize the carbon dioxide you make, you will need at least 918 / 52 = 17.6 square meters of fern leaf. Picture a 4.2 meter square wall, packed solid with ferns. If there are any gaps, stems, soil, or wall showing, it needs to be even larger. That’s the absolute minimum.

But maybe that still sounds OK? Fine. But consider one last barrier: Plants obey the laws of physics [citation needed]. If they remove carbon from the air, they must put that carbon somewhere. The only place it can go other than back into the air is into the plant itself.

The 1 kg of carbon dioxide you produce each day corresponds to 273 grams of elemental carbon. The only way for a plant to hide that is by making more plant. But dry plant matter is only ~50% carbon, and for each gram of dry plant matter, plants have 5-10 grams of water (varying a lot by species). So in order to sequester all the carbon you make, each day you will need to grow around

(1 kg carbon dioxide)
× (0.273 kg elemental carbon / kg carbon dioxide)
× (2 kg dry plant / kg elemental carbon)
× (8.5 kg actual plant / kg dry plant)
= 4.6 kg actual plant.

Your garden must grow that much, every day. That’s 140 kg per month. You must prune and discard all that outside, or your garden is not actually sequestering anything.

In conclusion:

  1. Build an industrial indoor farm.
  2. Weigh it.
  3. Wait two weeks.
  4. Weigh it again.
  5. Divide the increase in weight by your own body mass.
  6. That’s the fraction of your CO₂ that you’re removing from the environment.
  7. Open a window.
  1. Behold the power of arithmetic:

    (1 mole CO₂ / hour)
    × (477 kJ / mole CO₂)
    = 132.5 watts. 

  2. Again using the power of units:

    (1 mole CO₂ / hour)
    × (8 photons / CO₂ molecule)
    × (1.8 eV / photon)
    = 385.94 watts

    So chloroplasts are at most ~34% (132.5 / 385.94) efficient at channeling the energy in light into photosynthesis. 

  3. I find this 30% number amazingly low. (Well done, evolution.) And perhaps it should be somewhat lower. For one thing, the 30% figure comes from sunlight filtered to the 400-700 nm range. If you’ve got pure 680 nm light, absorption should be somewhat higher. Also, if photons are absorbed by some part of the plant other than the chloroplasts, they become heat and the energy is gone. But if they’re reflected or go through the plant, then they might go on to hit some other plant (provided you have a lot of plants around). If you really have pure 680 nm light and you have very densely packed plants, maybe you could drop this to 10-20%. 

  4. Wikipedia quotes a 35-45% loss just for respiration in the leaf itself. But then this paper shows numbers ranging from 30% to 56% depending on the species and growth rate. 

  5. I’ve estimated an overall efficiency of 132.5 watts / 918 watts ≈ 14.4%. If you go to Wikipedia, it estimates that ideal leaf efficiency with sunlight is only around 5.4%. That’s because sunlight contains a wide band of wavelengths and my calculation assumed an ideal 680 nm source. Around 47% falls outside the 400-700 nm range, and inside that range, around 24% is lost due to higher-energy photons with energy that gets wasted as heat. If you account for that, my estimate becomes 14.4% × (1-0.47) × (1-0.24) = 5.8%, which is close enough for government work. 

  6. A traditional “60 watt” incandescent lightbulb is rated based on the power input. But only around 2% of that energy is actually converted to light. So 918 watts of pure red light isn’t what you get from 918 / 60 = 15.3 lightbulbs. It’s what you get from 918 / 60 / .02 = 765 lightbulbs. That said, your eyes aren’t very sensitive to 680 nm light, so the perceived lux wouldn’t be nearly so bad. 

  7. The saturation point of plants is usually given in units of 300 μmol/m²/s. That the number of photons (in micromoles) that can be absorbed, per square meter of leaf, per second. A typical value for a shade-tolerant houseplant would be ~300 μmol/m²/s. If we assume again that the light is 680 nm so that each photon carries 1.8 eV of energy, then ~300 μmol of photons carries 51.92 joules. That’s 51.92 joules of energy per square meter of leaf surface, i.e. 52 watts. 

Does every question mark deserve a Betteridge?

2026-07-28 08:00:00

To blog is to get dunked on. I accept this. I even sometimes wonder if I should be grateful, as I suspect my willingness to get dunked on may represent a kind of comparative advantage. (You can tell yourself that if you try to placate the haters, you’ll just ruin things for people who like you. But how do you feel when you’re staring down barrel of a 127 comment thread full of people debating how it’s possible that you’re such an idiot?)

Still, there’s one particular species of dunking that puzzles me. For context, Betteridge’s law states:1

Any headline that ends in a question mark can be answered by the word no.

This is often employed as a sick burn, as in, You titled your article ‘Is this the world’s first gay caveman?’ because it’s not the world’s first gay caveman but you wanted it to be, because you want attention, you are so bad, har-har.

But I don’t quite understand the rules. Can someone explain the rules?

Question 1: Are question marks in titles always bad?

I’m just checking. I suppose I could see the logic, e.g. if you strongly feel that the bottom line should always come right up front. But I’m pretty sure that’s not the rule, because “this title used a question mark” is not regarded as a sick burn.

Question 2: Are question marks only OK if the essay ends with a full-throated “yes”?

Sometimes it does seem like this is the rule. But it’s strange. If it were universally enforced, we could all mentally convert “Do blue-blocking glasses improve sleep?” into “Yes, blue-blocking glasses really do improve sleep!” But then, of what use was the question mark? Why not just say they’re always bad?

If we’re going to allow questions that are actual questions, then it has to be possible for the answer to sometimes be something other than yes. On the other hand…

Question 3: Is Betteridge’s law useful at all?

I think so. At minimum, you can think of it as a convenient label for this theory:

  1. Traditionally, news articles are written with the bottom line up front.
  2. Traditionally, news articles have incentives to make a clear affirmative statement in the headline.
  3. So if a news article uses a question, that’s because they couldn’t justify making a clear affirmative statement.

I don’t think this theory is 100% accurate. But it’s accurate enough to deserve a name. (On the whole, more theories should have names.) Still, Betteridge’s law isn’t usually invoked as a neutral observation about the forces that led to a given title. It’s usually invoked as a dunk. So…

Question 4: Is Betteridge dunking ever appropriate?

Again, I think it is. Here are some of the best/worst examples from John Rentoul’s book, “Questions to Which the Answer Is No!”:

  • “Will Guam capsize?”
  • “Is Osama Bin Laden in Chicago?”
  • “Did Jesus foresee the US Constitution?”
  • “Des smartphones bientôt équipés d’airbags?”

I think we can agree something is wrong with these. But what, exactly?

Question 5: Is it central that the answer is “no”?

Consider these made-up titles:

  • “Is the Pope still Catholic?”
  • “Do you need to sleep every day?”
  • “Did Lincoln have personal qualms about slavery?”
  • “Did the Rubicon even exist back when Caesar supposedly crossed it?”

These are anti-Betteridges. The answer is yes, but the title is irritating in the same way: It gives the impression of a live debate when none exists.

Question 6: What’s really going on here?

I think it’s pretty clear. Consider the title:

Is aspartame bad for you?

If you understood it to be a settled question that aspartame is safe, and the article ultimately concludes that aspartame is safe, then you might find that title annoying. On the other hand, if you understood it to be settled that aspartame is bad for you, and the article confirms that yes indeed it is bad for you, then you also might find that title annoying.

The answer is immaterial. What’s irritating is when a title suggests a novel, interesting possibility that the article does not substantiate as worthy of attention.

Question 7: So what’s the problem?

Here’s a proposition: The modern internet rewards people for being overconfident. I don’t know if you’ve noticed, but people with blogs are not constrained by the norms of traditional newspapers. On the contrary, if you start a blog, you will soon learn that the best way to get attention is to write spicy aggressive titles like, “No, creatine does not make you smarter despite what all the stupid dumb mouth-breathing supplement hucksters may tell you.”

Now, I do think you should say what you actually believe. If you truly are that confident, I want you to tell me, not bullshit me by pretending to be neutral.

However, the internet corrupts all of us. Many people seem to start out with a public persona that is careful and measured and calm. But over time, they’re gradually sculpted by the Reward Function into something quite different. The degree this happens depends on your personality, where you’re competing for attention2 and how much you try to resist. But I don’t think anyone is truly above this.

Still, we should try to resist. My favorite kind of essay is, “Lucid examination of all sides of an issue which finds some evidence pointing in various directions and doesn’t reach a definitive conclusion because the world is complicated.” And I think the fundamental goal of a title should be to accurately signal the contents. But how is such an essay supposed to signal what it is, if not by using a question?

Question 8: What should a title do?

One theory is that question titles are sort of like lists: A thing with strong fundamental merits that has been rendered suspicious by abuse. Under this theory, we should push back against all the Betteridgeing and insist that question titles are fine when the question is genuinely open, regardless of the answer, and that people are wrong to Betteridge unless the question mark is being abused.

As far as I can tell, that’s the only internally consistent theory that doesn’t amount to saying that question titles should be forbidden. A slightly more conciliatory version would be that if you use a question mark, it’s your responsibility to demonstrate that it’s a real question, not something you made up.

I lean towards that theory. But part of me—a minority—thinks that perhaps question titles should be effectively forbidden. I thought I’d do a little reductio ad absurdum by trying to give this post an accurate non-question title. The best things I could think of were, “Hesitantly against over-broad Betteridge dunking” and “I weakly think excessive Betteridge dunking disincentivizes fairly examining all sides of an issue.” At first, I thought those were amusingly terrible. But are they, really?

PS. Was Rentoul’s book correct to list, “Should we clone Neanderthals?” as an example of a question to which the answer is no?

  1. Implicitly, this applies only to yes/no questions. “How long should you brew your tea?” should not be answered with “no”. 

  2. Hi Twitter. 

Does creatine make you smarter?

2026-07-22 08:00:00

Is creatine a weird steroid-like hormone or drug?

No. Creatine is a nutrient. Most omnivores eat a gram or two per day from meat. Your body also synthesizes a gram or two per day. You need creatine to deliver energy inside of cells. It is normal and non-weird.

Does creatine increase testosterone?

Unlikely. This concern comes from one study in 2009 on 16 male rugby players.1 But that study is considered extremely suspect. There have been at least twelve other studies that all found no change or physiologically irrelevant changes. Beyond that, it’s implausible that creatine would increase testosterone, because we know what creatine does and it has nothing to do with hormones.

Does creatine make you go bald?

No. Or, rather:

  1. No study ever reported that.
  2. One study reported the opposite.
  3. There is no mechanistic reason to think that would happen.
  4. There are good mechanistic reasons to think that would not happen.

These rumors all trace back to speculation built on top of that same single 2009 study. But that study is contradicted by later research, and anyway didn’t measure hair. Anything is possible, but as far as I can tell, it’s equally plausible that creatine would increase hair growth. And if you’re really worried about this: Are you going to stop eating meat?

Is creatine safe?

Probably. The International Society of Sports Nutrition says:

Available short and long-term studies in healthy and diseased populations, from infants to the elderly, at dosages ranging from 0.3 to 0.8 g/kg/day for up to 5 years have consistently shown that creatine supplementation poses no adverse health risks and may provide a number of health and performance benefits.

It’s been studied extensively, and no risks have been found. The way it works doesn’t suggest any risks. And supplementing a few grams per day doesn’t put you far outside the range that people get from normal food.

Does creatine make you stronger?

Yes. It’s very rare for a supplement to have such strong and consistent evidence. A widely-cited review says that short-term supplementation increases maximal power/strength by 5-15%. This in turn may increase the long-term gainz from strength-training exercise. Creatine also increases sprint performance by 1-5%. Though, there seems to be little if any benefit for endurance exercise like long-distance running.

But how does creatine make you stronger?

Before answering that, can I go on a rant about how muscles work?

…OK?

Great! Here’s how muscles work:

  • All cells have a molecule called ATP floating around inside, which they use for energy.
  • Muscle cells have proteins in them called myosin.
  • When ATP bumps into myosin, the myosin breaks the ATP down into ADP. This releases energy which is physically captured by the myosin as elastic strain.
  • When triggered by neurons, myosin releases that mechanical energy.
  • When you decide to move your arm, your brain triggers many muscle cells, carefully orchestrating the myosin twitches into large-scale movement.

Now, here’s something that’s crucial for our story: Very little energy is stored as ATP. Your body contains ~100 grams of ATP, representing ~10,000 joules of energy.2 But your body at rest burns ~100 watts. So you only store enough ATP to keep yourself alive for ~100 seconds. If you sprint, you could easily burn ~3000 watts, which would use all your stored ATP in ~3 seconds.

Through the magic of eating, you’re always making more ATP. Typically, your mitochondria recycle ~1 gram of ADP back into ATP per second, the same amount you need to stay alive.3 If you start running, your body can ramp that up to ~10 grams per second, though tricks like breathing faster and speeding up your heart.4 But it takes a minute or two for your mitochondria to really get cranking.5

So then why am I able to sprint for longer than three seconds?

Because creatine acts as an additional energy reservoir, coupled to the ATP reservoir. After you eat or synthesize creatine, 60% is converted into phosphocreatine. This is done by an enzyme that grabs a creatine molecule and an ATP molecule and moves a phosphate group between them. This “charges” the creatine into phosphocreatine and “discharges” the ATP into ADP.6

But if your ATP levels drop—e.g. because you’re running away from a tiger—those enzymes will run in reverse, meaning they “discharge” phosphocreatine into creatine and “charge” ADP back into ATP. This happens almost instantly, so that ATP and phosphocreatine deplete at the same rate.7

At rest, your muscles contain around 3-4 times as much phosphocreatine as ATP. So the “extra” energy storage in phosphocreatine is much larger than the “base” storage in ATP itself. That’s why you can sprint for ten seconds rather than just three seconds.

Does supplementing creatine increase creatine levels in muscle cells?

Yes. Typical levels are:

  • Vegetarian: 100 mmol / kg
  • Omnivore: 120 mmol / kg
  • Someone who supplements creatine: 140 mmol / kg

So, everything seems to add up. If you supplement creatine, you increase your levels by ~16.67%, implying ~12.5% more total short-term energy storage.8 That’s in line with the 5-15% increase in strength seen in creatine trials.9 It also seems to make sense that creatine trials find little benefit for endurance exercise. If you don’t have sudden bursts of activity, a larger short-term energy reservoir won’t really help you.

But isn’t this all very strange?

Well, I find it strange. All else equal, more strength is good. The body already knows how to make creatine. If you can just raise creatine levels and get more strength with no downsides, then shouldn’t evolution have done this already? Some variant of the Algernon argument would suggest that the fact that creatine works so well should be impossible.

You might think that higher creatine levels are bad somehow, and that’s why evolution didn’t make them higher. But that seems wrong. Creatine levels vary naturally based on what you eat. If higher levels were bad, evolution could have brought them down. But it doesn’t. It just lets them vary.

Often, evolution makes us “worse” to reduce our energy expenditures, because evolution hates it when we starve to death.10 But the body only spends 1-2 calories per day synthesizing creatine, and more creatine in muscle cells doesn’t have any significant metabolic cost.

I think the boring explanation is that for our evolutionary ancestors, modest increases in short-term strength just weren’t a big deal. We were exhaustion hunters, not 1-rep max deadlift hunters.11 Also, more creatine causes your muscle cells to draw in some extra water, which slightly increases energy usage for long-distance running.12 So, if you happened to get extra creatine from meat, great. If not, whatever. In the range where creatine fluctuates based on diet, I suspect creatine levels just didn’t have much impact on reproductive success.

Still, we must acknowledge that creatine is unusual. I wish we could tell our bodies, “Hey, we have access to unlimited amounts of food. Stop worrying about conserving energy and concentrate on being awesome.” But we have very few ways to do that. As far as I can tell, the list of normal nutrients that have been proven to increase strength is: protein, creatine, beta-alanine, the end.

So creatine is special. And creatine makes you a little stronger. Does it make you a little smarter, too?

Is creatine used by the brain?

Yes. Most parts of the body don’t contain significant creatine. But the brain does, along with muscles, the heart, and testes. Neurons use it to play the same game muscles do with ATP and phosphate groups and so on.

How much creatine is in the brain?

Maybe half as much as in muscle. The number of interest here is the ratio of phosphocreatine to ATP, indicating how much phosphocreatine increases local energy storage. We saw above that in muscle, that ratio is 3 to 4. In the brain, the numbers are a little sketchy, but the ratio seems to be more like 1.5 to 2.13

But why? Why would the brain use creatine?

Good question! The brain doesn’t have bursts of energy usage like muscles do. Yes, the brain uses ~20% of all calories despite only making up ~2% of body mass. But the brain is unusual in that it needs all that energy just for basic housekeeping, and doesn’t ramp up with usage. Contrary to the common myth, thinking hard does not burn significantly more calories. (Demonstration: Start thinking hard, and watch as your heart rate does not increase.)

So muscles use creatine for sprints. But the brain doesn’t have sprints. So what the hell is the brain using creatine for?

The most common theory seems to go like this: Actually, muscles don’t just use creatine as an extra energy reservoir. They also use it to deliver energy inside of cells. You see, creatine diffuses faster than ATP inside of cells. So even with endurance exercise, creatine is still being used: Enzymes near the mitochondria use ATP to “charge” creatine into phosphocreatine and enzymes near myosin use that phosphocreatine to “recharge” ADP back into ATP. Even though the net change in creatine is zero, it helps “shuttle” energy from the mitochondria to the myosin.

Under this theory, what neurons and muscle cells share is that parts of the cell locally use a lot of energy, when they get triggered. So even though your brain doesn’t “sprint”, it still uses creatine to avoid local energy deficits.

There’s also experimental evidence that creatine is important for the brain. We’ve created genetically altered mice with brains that lack the enzymes needed to convert creatine to and from phosphocreatine. They display severely limited spatial learning and somewhat smaller brains.

Some humans also naturally have creatine deficiency. In some variants, people have trouble synthesizing creatine. This leads to lower levels throughout the body, including skeletal muscle where 95% of creatine lives. Nevertheless, the primary symptom is related to the brain, namely intellectual disability. Muscle weakness and seizures are also common. Other people have creatine transporter deficiency, meaning creatine can’t cross the blood-brain barrier. This leads to lower levels in the brain only. This leads again to intellectual disability and also often muscle weakness or seizures. (That muscle weakness is despite the fact that the muscle cells themselves have normal creatine levels.)14

So somehow, creatine is very important for the brain.

Does supplementing creatine increase creatine levels in the brain?

Probably, though likely less than in muscle.

Creatine can definitely cross the blood-brain barrier. However, the protein that helps it cross is not abundant, and there are some suggestions that it’s down-regulated with prolonged creatine consumption. The brain itself can synthesize some creatine, and this too might be down-regulated by prolonged consumption.

Of course, you can just give people creatine and see what happens to their brains. There have been around a dozen such studies. Most report increases between 3% and 10%, although a few report no change. However, because brains are hard to access, these studies rely on magnetic resonance spectroscopy, and some suggest that these measurements are unreliable.

In people who can’t synthesize creatine, oral supplementation seems to normalize levels in the brain. (Some cognitive impairment usually remains. One patient was diagnosed and began supplementing at three weeks of age and had no intellectual disability.) So supplementing can increase brain levels in some circumstances.

My best guess is that supplementing does usually increase levels in the brain, and that an increase of 3% to 10% is plausible. But the evidence isn’t particularly strong.

Why did people get interested in creatine having cognitive benefits?

Because of Rae et al. (2003). They took a group of 45 healthy vegetarian or vegan university students in Australia. They did a cross-over trial where half of people got 5 grams of creatine per day for six weeks, followed by a six-week wash-out period, followed by the other half of people getting creatine. Their results were amazing, with huge improvements on Raven’s matrices (RAPM) and backward digit span (BDS):

In their analysis, creatine increased BDS by 1.19 standard deviations, and RAPM by 1.76 standard deviations. If we convert those numbers to IQ points (where 1 standard deviation ↔ 15 IQ points), that would mean increases of 17.85 and 26.4 IQ points, respectively. In both cases, the results were highly significant (p < 0.0001).

Does that replicate?

No. Following that paper various groups tried similar experiments but no one found such a large or statistically significant effect. After twenty years of inconclusive results, Sandkühler et al. (2023) set out to give a definitive reproduction. In my view, this is the highest-quality RCT ever done on the cognitive benefits of creatine.15 They largely borrowed the experimental design of Rae et al., although they did the experiment in Germany, used a larger sample of 123 people, used half non-vegetarians, and they dropped the wash-out period. Here are their main results:

(T1 shows test results at baseline. T2 shows results after six weeks of creatine or placebo. T3 shows the results after another six weeks, where the placebo group crossed over to creatine and vise versa.)

Overall, everyone got better over time, probably from practice. On backwards digit span, during the first six weeks, the group getting placebo actually improved slightly faster than the group getting creatine. But when those groups switched between getting placebo and creatine, that (formerly placebo, now creatine) group improved even faster. Just staring at the graph, this suggests some benefit. On Raven’s matrices, the same thing happened, but with a greatly reduced magnitude.

They fit a statistical model and report an effect size of 0.17 standard deviations for backwards digit span (~2.5 IQ points, not quite statistically significant) and 0.09 standard deviations for Raven’s matrices (~1 IQ point, not even close to significant). They found no extra benefit for vegetarians, not even a non-significant benefit.

As far as I can tell, this discrepancy has never been convincingly explained. Rae et al.’s 2003 experiment seems well done. The results are too large to be explained by p-hacking and too statistically significant to be explained by random noise. Maybe for some reason, Rae et al.’s cohort had lower baseline creatine levels? It’s very odd. But history suggests that when an exciting result is followed by a disappointing replication, we should bet on the disappointing replication.

What about all the other RCTs? Doesn’t this call for a meta-analysis?

In principle, yes. The trouble is, most of the studies don’t report the numbers needed for a good meta-analysis. They do some experiment giving creatine to half of people and placebo to the other half, and measure how those groups do on some cognitive test. Then they fit some statistical model and report p-values or whatever. But they never actually publish the raw means and standard deviations.16

Fortunately for us, Xu et al. (2024) contacted the authors for all those trials and got their raw data. According to their meta-analysis, creatine had the following effects.

Domain Effect size (standard deviations)
Overall cognitive function +0.34
Executive function +0.32
Attention +0.22
Memory +0.31
Processing speed +0.01

Unfortunately for us, that paper is bad. They claim that several of these results are statistically significant, but a 2026 commentary points out that they made an error that amounts to double-counting the same data for several studies.17 For that reason, I haven’t shown their (incorrect) confidence intervals. If computed correctly, I suspect none of the results would be statistically significant. Technically, the above point estimates are also wrong, although the error shouldn’t systematically bias them in either direction.

In general, I have to tell you that I really don’t trust this paper. It’s very sloppy with tons of missing details. But as far as I can tell, no one else has ever assembled the data needed to do a good meta-analysis. So I think those numbers are the best summary we have.

So who can we trust?

I’ll tell you who I trust: The European Food and Safety Authority (EFSA). In 2024, a firm selling creatine applied to the EU to be allowed to advertise cognitive benefits. This led the EFSA to publish Creatine and improvement in cognitive function: Evaluation of a health claim pursuant to article 13(5) of regulation (EC) No 1924/2006.

Here’s what they have to say (I’ve cut references for readability):

The Panel considers that, overall, the 10 human intervention studies […] do not show a consistent effect of creatine supplementation on cognitive function. The Panel notes that the acute effect of creatine on working memory reported in some studies […] was not observed at lower creatine doses […] or with continuous consumption of creatine. The Panel also notes that the effect of creatine […] reported in one study is an isolated finding across the body of evidence, where no effect of creatine supplementation was observed on other cognitive domains, including different facets of memory (episodic, short‐term, visual), verbal fluency, attention, alertness, processing speed, psychomotor speed, executive function and general cognitive ability/flexibility and fluid intelligence. Finally, the Panel notes that the three intervention studies conducted in diseased individuals do not support an effect of creatine supplementation on cognition.

I think we should consider this definitive. I’d go so far as to say this document probably represents the greatest effort our civilization has ever made to understand if creatine has cognitive benefits.

But we need to remember the ESFA’s role. They’re asking if creatine has been proven to have cognitive benefits, because they’re deciding if it should be legal to advertise cognitive benefits. They say no and I believe them. But that doesn’t mean there are no cognitive benefits.

Are there other reviews of the RCTs?

Yes. Here are all the recent reviews I could find, with a few representative quotes from each:

Review Quotes
Avgerinos et al. (2018) “There was evidence short term memory and intelligence/reasoning may be improved by creatine administration.”

“Performance on cognitive tasks stayed unchanged in young individuals.”

“Vegetarians responded better than meat-eaters in memory tasks”
Dolan et al. (2019) “the blood–brain barrier is an obstacle for circulating creatine”

“may improve the performance in some cognitive tasks, particularly in stressful conditions (e.g. mental fatigue, exhaustive exercise).”
Roschel et al. (2021) “potential for creatine supplementation to improve cognitive
processing, especially in conditions characterized by brain creatine deficits”

“supplementation studies concomitantly assessing brain creatine levels and cognitive function are needed”
Prokopidis et al. (2023) “After correction, our overall analysis showed that creatine monohydrate does not improve overall memory performance (standardized mean difference 0.19; 95% confidence interval, –0.07, 0.46)”
Xu et al. (2024) “Creatine supplementation showed significant positive effects on memory and attention time, as well as significantly improving processing speed time. However, no significant improvements were found on overall cognitive function or executive function.”
McMorris et al. (2024) “Creatine supplementation has no significant effect on young healthy participants in unstressed situations. Moreover, the review show mixed results for stressed groups.”

“Vegans do not intake sufficient […] creatine to ensure the levels necessary for maintaining optimal cognitive output.”

“Closer examination of [the evidence] suggests that there may be more positive outcomes of supplementation than the research so far provides.”
UK NHCC (2024) “A cause-and-effect relationship has not been established between the consumption of ≤3g per day creatine and improved cognitive function.”

On average, the RCTs do find a small positive effect, just not a statistically significant positive effect. As I so often point out, that’s exactly what we would expect if the true effect were positive but small. But it’s also entirely possible that this is due to random chance or p-hacking or publication bias. Gwern contacted one author and found that publication bias did in fact occur.

Overall, I think the RCTs provide very weak evidence in favor of a small benefit for healthy adults. (Perhaps 0.1 to 0.3 standard deviations, depending on the measure.) I also think they provide moderate evidence against a larger effect for healthy adults (above, say, 0.5 standard deviations) and weak evidence for a small benefit for adults that are “stressed” in some way that might diminish creatine, such as being older, vegan, or physically exhausted.

Can you summarize the evidence in favor of creatine making you smarter?

I would love to do that:

  • Creatine is special. Very few nutrients really make you stronger, but creatine does.
  • Few parts of the body other than muscles use significant creatine, but the brain does.
  • Creatine can cross the blood-brain barrier.
  • Creatine is vital for the brain to function correctly.
  • Supplementing creatine probably increases creatine levels in the brain, at least a little.
  • Some RCTs suggest a cognitive benefit.

Can you summarize the evidence against creatine making you smarter?

Yes:

  • We don’t fully understand how the brain uses creatine. There is no clear mechanistic story for why supplementing creatine should make you smarter.
  • The best analogy for how the brain uses creatine is how your muscles use creatine for endurance exercise. But creatine has little benefit for endurance exercise.
  • It hasn’t been firmly established how much (or if) supplementing creatine increases creatine levels in the brain.
  • The RCTs suggest a benefit that is quite small, on the order of 1 to 3 IQ points.
  • The RCTs are not statistically significant.

Does creatine make you smarter?

I don’t know. Maybe a little.

You could make an argument like this: Creatine is crucial for the brain (somehow) so it’s safest to keep levels high, just in case. But I’m not sure I buy that. Creatine is crucial for the brain but there are several hints that evolution knows that, and so regulates levels in the brain more tightly than in muscles.

I might buy that argument for vegetarians or vegans. But there is scant experimental evidence for extra cognitive benefits in those groups, and even some evidence that vegetarians may not have much lower brain creatine levels, despite vastly lower consumption.

And if creatine is helpful, the likely benefit is probably quite small. Say you think there’s a 50% chance creatine increases IQ by 1 point and a 50% chance it’s useless. Is it actually worth the trouble of taking 5 grams of creatine every day for an expected increase of 0.5 IQ points? I’m not sure.

  1. Technically, they found an increase in dihydrotestosterone (DHT) but not testosterone. 

  2. Conveniently, in typical cellular conditions, the body can extract around 100 J of energy from 1 gram of ATP. So we can convert 1 gram ≈ 100 J and 1 gram per second ≈ 100 J / second. You may recall from high school that a watt is defined as 1 watt = Joule per second. 

  3. Wikipedia quotes a paper saying people make / recycle around 50 kilograms per day. That would imply that people make around 0.5787 grams per second. But this is in tension with the idea that people use 100 watts at rest. Since that 100 watt number seems to be more strongly established, I think 1 gram per second is a better estimate. 

  4. Why do you breathe? You breathe because your mitochondria need oxygen to make ATP. When you exercise, you breathe faster so that your mitochondria can make more ATP. You can actually calculate how much ATP your mitochondria make using your VO₂ max score: For each liter of oxygen you use, you make ~21,000 joules of energy, corresponding to ~210 grams of ATP. If you have a typical VO₂ max score of 40 mL/kg/min and you weigh 70 kg, that means you are using 2.8 liters of oxygen per minute, which corresponds to ~588 grams of ATP per minute or ~9.8 grams per second. 

  5. A Tour de France cyclist might burn 1500 or even 2000 watts for hours, meaning they are producing ~20 grams of ATP. They can do this because they’ve trained their bodies to have more mitochondria and better oxygen delivery to those mitochondria. But it takes a few seconds for the body to ramp up and start producing this much power. 

  6. The “T” in “ATP” is for “triple”, meaning there are three phosphate groups. The “D” is for “di”, meaning there are two phosphate groups. 

  7. There’s also stored energy in the form of glycogen. This takes a few seconds to come online, and lasts a few minutes. In a sprint, you aren’t limited by glycogen stores running out, but by having too much acid buildup.

    So, effectively, the body has five levels of cached energy:

    1. The mechanical energy stored in the elastic strain of the myosin.
    2. The chemical energy stored in ATP molecules. (Recharges myosin)
    3. The chemical energy stored in (phosph)ocreatine molecules. (Recharges ATP)
    4. The chemical energy stored in glycogen. (Recharges ATP and thus creatine.)
    5. The chemical energy stored in food and fat. (Used to recharge glycogen (food) and ATP (food or fat) and thus creatine.)

  8. It’s 12.5% rather than 16.67% because your short-term energy storage is ~75% phosphocreatine and ~25% ATP, and supplementing creatine does not increase ATP. 

  9. I’m not sure to what degree this math actually explains why we see a 5-15% increase in strength in creatine studies versus just being a coincidence. It’s a jump from “X% more short-term energy storage” to “X% increase in max bench press”. 

  10. Compared to our evolutionary ancestors, we have long helpless childhoods, low muscle mass, and smaller brains

  11. I do wonder about this given how many people died violent deaths in non-state societies. But how often would 10% more strength tip the outcome? 

  12. I find it amusing that lots of sources refer to extra water retention as a “common side effect” and even report statistics, when a far as I can tell it’s essentially guaranteed by physics. 

  13. Tsuji et al. report a phosphocreatine to ATP ratio of 0.77 in grey matter and 2.18 in white matter, Lu et al. reports ~1.45 in entire brains, and Hetherington et al. report 1.0 in white matter, 1.6 in gray matter, and 2.1 in the cerebellum. 

  14. Difficulty synthesizing creatine is treated by supplementing creatine. Creatine transporter defect currently has no effective treatment. 

  15. After writing this sentence, I later noticed that this experiment had apparently been funded by the Effective Altruism Foundation, Effective Ventures, and personally by (well-known AI alignment researcher) Paul Christiano

  16. I know this sounds odd, but it’s very common. Everyone wants to establish truth, not just create data so someone else can establish truth. It’s hard to blame them, given their incentives. 

  17. Another 2022 meta-analysis by Prokopidis et al. found similar results but apparently has a similar problem. Prokopidis et al. deserve credit for acknowledging the issue and issuing a correction. However, Prokopidis et al. only look at memory, and they seem to be working with before-after scores on the same people, rather than comparisons between the placebo and creatine groups. 

Pseudpocalypse

2026-07-14 08:00:00

Here’s a conjecture: If you put any significant amount of text on the internet under different names, those identities can be linked using only the text itself. This is possible (I conject) because of the statistical “fingerprint” you leave in everything you write.

Imagine a website where you can paste in some brand-new text someone just wrote. In return, the website provides links to all the text that writer has ever published under any name. It’s not perfect, but it’s pretty good. As far as I know, no such website exists—at least not on the public internet. But I suspect it’s possible and will soon become easy. This will pose some difficulty for pseudonymous blogging.

Note: I wrote most of this essay in mid-2025, after which I idiotically sat on it for a year tinkering with theorem statements that none of you will read.1 In the meantime, LLMs have gotten much better at guessing authors from text. (Given the first 1000 words of a draft of this post, Claude 4.8 knows it’s me.) Still, I think we’re just getting started. I expect to see increasingly obscure writers identified from increasingly small bits of text. I expect that this work even when people are writing in a different register or about unrelated subjects. And I expect that everything I’ve ever written under any pseudonym will soon be linked to my genuine-nym.2

A stronger conjecture is that we’re heading towards a sort of generalized pseudpocalypse. Perhaps, in the future, if you interact with the world through essentially any high-bandwidth channel, then you identify yourself. Say you wear a mask in public and only speak by sub-vocalizing into a voice changer. That’s fine, you’ll still be identified using your body shape, gait, or chemical signature. Or say you don’t like your car being tracked everywhere, so you stop carrying a phone and you somehow convince lawmakers to ban license plates. No problem, your car will still be tracked using tiny scratches or unique pinging sounds from the engine. Or say you don’t like being tracked on the internet, so you lock down your browser profile, buy stuff only with Monero, and connect through a chain of three VPNs. That’s OK. You’ll still be identified through how you wiggle your finger as you scroll down the page. We’re all just too unique, and the information theoretic limit is coming for us.

Starting bits

Let’s start from first principles. Imagine that at birth, everyone is assigned a random binary string. Whenever you post anything on the internet, you’re required to sign it with that string. If the strings are very short, like 0110, then lots of other people will have the same one as you. But if the strings are very long, then yours would almost certainly be unique and it would be trivial to link all your pseudonyms.

Where’s the transition point? If you only know that the author is currently alive and living somewhere in the Anglosphere, it’s around 29 bits. That’s because if there are K digits, then there are 2ᴷ possible binary strings, and if K = 28.86, then 2ᴷ ≈ 490,000,000 is the number of currently-alive Anglosphere-dwellers. If the strings have fewer than 29 bits, then someone else will probably share your string. If they have more than 29 bits, then your string is probably unique.

We don’t (yet?) have to sign the things we write with immutable government-issued strings. But the way you write still provides lots of clues about you by way of your tone, personality, word choice, and so on.

Theoretically speaking, I think it has to be possible to link the identities of anyone who writes enough. Imagine again that everyone is assigned a random binary string at birth, but instead of you needing to sign the stuff you write with your string, each time you write a word, there’s some chance that a random bit from your string is revealed and added as a signature to your message. For example, maybe a signature of bit[129]=1 is added, indicating that your string at position 129 has value 1.

Think of your string as representing all your writing style quirks, and a bit being revealed as representing when you write something that reveals a preference. For example, maybe bit 18 indicates if you prefer to write your em-dashes with hideous spaces — like this — or without spaces—like this. If you use an em-dash, that bit is revealed.

So imagine you’ve written a lot under Pseudonym A, enough that the full bit-string has been revealed. Maybe it’s this:

Pseudonym A: 
110000001111001101110000100001
010100100101011110111001101000
100111110010101001101010111010

Now say you start writing under Pseudonym B. Initially, none of the bits will be known:

Pseudonym B: 
??????????????????????????????
??????????????????????????????
??????????????????????????????

But slowly, you’ll start to leak a few bits:

Pseudonym B:
?????00???1????1????????1??0??
?????01??1?????????11????01???
???1??????1???10??????????????

And eventually you’ll leak a lot of bits:

Pseudonym B:
???0?00?1?11??110??1????10?0??
?10?001?0101?11???11100?101???
???11?1??010??10?1?01??011????

Now think about this from the perspective of an “attacker” who wants to know if A and B are the same person. Let’s assume they’ve only seen the above bits, and have no information about anyone else. Then here’s what the attacker knows:

  1. A and B have revealed K overlapping bits, which all match.
  2. Different people have a 50% chance of matching on any given revealed bit.
  3. Non-different people have a 100% chance of matching on any given revealed bit.
  4. There are 490,000,000 people.

Intuitively, if K was 5, then the fact that all bits match wouldn’t prove much, since with 490 million people, lots of people would match on those bits by chance. But if K was 70, it’s extremely unlikely that two different people would share all of them, even with such a gigantic pool to start with. It turns out that if there are N other people with random bits, and you pick K of your bits, the probability that someone exists who matches all of them is 1 - (1-2⁻ᴷ)ᴺ. When N is 490 million, that looks like this:

Look at that, 29 appears again. (Isn’t math wonderful?) In general, the transition happens around whatever number of bits K makes 2ᴷ ≈ N, namely K = log₂(N).

If you reveal significantly fewer than 29 bits under pseudonym B, then it’s almost guaranteed that there’s someone else out there who matches all of them. But if you reveal significantly more than 29 bits, then there’s almost no chance that anyone else exists who matches all of them. So the attacker essentially knows that A and B are the same person. And I stress again: They know that without needing to see anything from the other 490 million people.

Of course, we don’t literally leak bits of immutable feature strings as we write. But you can make the model more realistic, and the same issue persists. If you want to reflect that text only provides noisy information about the writer, then you can add noise to the bits before they’re revealed. If you want to reflect that some writing styles are more common than others, then you can make the distribution over bit strings non-uniform. If you want to reflect that certain quirks are more obvious than others, you can give different bits different probabilities of being revealed. All these make the math more complicated. But they don’t change the basic conclusion: If your writing style contains at least 29 bits of information, and you do enough writing, you’re done.

That’s my argument that pseudpocalypse is possible. But I don’t just want to claim that it could happen, eventually. I think it is likely to happen, soon, and that the amount of text you need to reveal isn’t very large. To make that argument, we need to get specific: What features do people have that are reflected in their writing? How many bits of information do those features contain? How accurately can those bits be guessed from written text?

Note: To avoid this turning into a giant information theory lecture, I’ll mostly use words like “bit” and “information” without being 100% fully precise about what they mean. I’m doing that because I expect that most people reading this aren’t definition-of-bit fetishists, and anyway being hyper-technical would obscure the big picture. If you’re an information theory enthusiast and/or skeptical that I know what I’m doing, I refer you to the Section For Skeptical Information Theory Enthusiasts, below. Until then, use your intuition and have faith.

Feature space

Say you knew nothing about me other than that I wrote the above words. And say you had to guess my age or religion or occupation. You could guess, right? It wouldn’t be perfect, but you’d do much better than you would without being able to read those words. Thus, somehow, those words contain information about my demographic characteristics. So I tried to make a list of similar things that you could plausibly guess from text at least somewhat better then chance. Here’s what I came up with:

  • Age
  • Education
  • Ethnicity
  • Family status
  • Income
  • Marital status
  • Mental health
  • Native language
  • Occupation
  • Physical health
  • Political leanings
  • Region
  • Religious affiliation
  • Sex

In the same spirit, if you only read the above words, could you guess how extroverted or conscientious I am? Again, not perfectly. (When I meet people who read this blog, they usually seem surprised I can survive direct sunlight.) But still, I’m sure you’d do OK. So, again, these words contain information about my personality.

What features does personality have? The HEXACO model lists six, namely honesty-humility, emotionality, extraversion, agreeableness, conscientiousness, and openness to experience. I suspect those can all be guessed with reasonable accuracy from a long-enough writing sample. But could you guess more? For each of those six factors, the HEXACO model lists four “facets”. In the abstract, trying to guess 6 × 4 = 24 different personality features from text sounds ludicrous, but just look at them:

  • Honesty-humility
    • Sincerity
    • Fairness
    • Greed avoidance
    • Modesty
  • Emotionality
    • Fearfulness
    • Anxiety
    • Dependence
    • Sentimentality
  • Extraversion
    • Social self-esteem
    • Social boldness
    • Sociability
    • Liveliness
  • Agreeableness
    • Forgivingness
    • Gentleness
    • Flexibility
    • Patience
  • Conscientiousness
    • Organization
    • Diligence
    • Perfectionism
    • Prudence
  • Openness to experience
    • Aesthetic appreciation
    • Inquisitiveness
    • Creativity
    • Unconventionality

If you think about specific people, I think you can convince yourself that these 24 represent real things, and that it’s plausible to guess them from text. (Your favorite existential angst + science blogger, for example, might score lower on “modesty” than the other honesty-humility facets.) The different sub-factors are surely correlated, but not perfectly correlated.

Of course, the biggest thing you learn from people’s writing is how they write. Do they tend to pointlessly split infinitives? Do they use hyphen-connected words? Do they, incorrectly, position their adverbial clauses?

The idea of attributing authorship using writing style features goes back to at least 1440, when Lorenzo Valla demonstrated that the Donation of Constantine—in which Emperor Constantine supposedly donated the Roman Empire to the Catholic Church—used a vernacular that came from 400 years after Constantine’s death and was therefore a forgery. In 1851, Augustus De Morgan observed that average word length tends to be stable for the same author. The first “modern” attempt seemingly came in 1964, when Mosteller and Wallace published Inference in an Authorship Problem:

This study [attempts] to solve the authorship question of The Federalist papers; […]

Word counts are the variables used for discrimination. Since the topic written about heavily influences the rate with which a word is used, care in selection of words is necessary. The filler words of the language such as an, of, and upon, and, more generally, articles, preposition, and conjunctions provide fairly stable rates, whereas more meaningful words like war, executive, and legislature do not.

After an investigation of the distribution of these counts, the authors execute an analysis […] based on Bayesian methods. The conclusions about the authorship problem are that Madison rather than Hamilton wrote all 12 of the disputed papers.

Get that? The idea is that your usage of the word war depends mostly on if you happen to be talking about war. But your usage of upon mostly depends mostly on how much you like the word upon. To demonstrate this, they took 48 papers written by Hamilton and 50 by Madison and made this table of how many times they used by, from, and to:

Madison liked by. Hamilton was more a to man. Using these kinds of statistics, they concluded that the disputed Federalist papers must have been written by Madison.

So I did some research looking for other writing style features that are believed to be stable when people write about different subjects. I found that there are a lot. There were so many that I struggle to even organize them into meaningful groups:

Low-level frequencies:

  • Word lengths
  • Sentence lengths
  • Paragraph lengths
  • Punctuation frequencies (commas, colons, dashes, parentheses)
  • Function word frequencies (the, of, and, to)
  • Adverb frequencies
    • Intensifiers (very, really, quite, pretty, so)
    • Evidential markers (apparently, evidently, obviously)
    • Downtoners (somewhat, fairly, rather)
  • Pronoun usage
    • Overall preferences (I/we vs. you vs. he/she/they)
    • Third-person singular preferences (he, she, he or she, they, one)
  • Modal verbs (can, could, might, must, should, will, would)
  • Hedges (perhaps, maybe, possibly, probably)
  • Conjunctions (and, but, yet, so)
  • Known stable ratios (the/a, this/that, these/those, I/me/my)
  • Character N-grams (3-grams and 4-grams)
  • Word N-grams (often 3-grams)

Lexical features:

  • Vocabulary size
  • Lexical diversity / type-token ratio (Number of distinct words divided by number of words.)
  • Frequencies of rare words
  • Semantic density
  • Discourse marker positions, combinations (So, anyway, so anyway)
  • Use of abbreviations and acronyms
  • Preference for latinate vs. germanic words (The majestic creature traversed the terrain vs. the mighty beast strode across the land.)

Syntactic features:

  • Syntactic complexity
    • Subordination index
    • Average parse tree depth
  • Use of passive voice.
  • Nominalization (She was shocked I ate the pizza vs. My pizza consumption shocked her)
  • Verb tense and aspect (I walk vs I walked vs I was walking vs I have walked)
  • Sentence structure preferences:
    • Branching preferences (Cursed everyone had a good time when Alice taught some cool dogs I met and brought to dinner to juggle vs. clumsy-but-readable I met some dogs and they were cool and I took them to dinner and Alice taught them to juggle and and everyone had a good time.)
    • Adverbial clause positioning (Suddenly I was hungry vs. I was, suddenly, hungry vs. I was hungry, suddenly)
    • Sentence-final weight (Your plan won’t work because of the dyslexic bears vs. Dyslexic bears mean your plan won’t work.)
  • Polysyndeton (I like dogs, cats, and ferrets vs. I like dogs and cats and ferrets.)
  • Repetition / breaking of syntactic structures.

Style features:

  • Register / formality.
  • Patterns in sentence length (long/short/long/short vs. long/long/short/short)
  • Stressed syllable interval preferences (e.g. iambic vs. trochaic)

Rule preference features:

  • Minor punctuation (I laughed—you cried vs. I laughed — you cried, “…” (three periods) vs. “…” an actual ellipsis)
  • Capitalization. (Job titles, seasons, after a colon, mistakes)
  • Apostrophes (Steve Jobs’ car vs Steve Jobs’s car, 1990’s vs 1990s)
  • Hyphenation (a highly-stable feature vs a highly stable feature)
  • Oxford commas.
  • Article omissions (Local dog was petted. vs. A local dog was petted.)
  • Relative pronoun omissions (the dog you petted vs. the dog that you petted)
  • Who vs. whom.
  • Split infinitives (To obsessively blog vs. to blog obsessively)

Idiosyncratic features:

  • Whitespace habits.
  • Spelling errors (loose instead of lose)
  • Grammar errors. (Between you and I)
  • Consistent, unique typos
  • Other consistent errors (repeated words, un-closed parentheses)

That’s a lot. There are surely more. And these are all “shallow” features that humans came up with using our tiny little brains. I strongly suspect that there are many more “deep” features that could be found by looking for statistical patterns in a sufficiently large dataset. Many of those features might not even have a coherent English-language description. But they’re still there, providing bits for those who seek them.

So we leak information about lots of different stuff when we write. But how much information? Is it possible to say how many words are needed to uniquely fingerprint someone?

No. To a first approximation, the answer is no. But to a second approximation, maybe? Within an order of magnitude? I’ll try, but it’s going to be hard.

Demographic bits

How many bits of identifying information does text provide by way of demographic features like age and sex and so on?

At first glance, this seems a perilous question, as it depends on the number of categories you consider those things to have. Take sex. For pseudpocalypse purposes, your opinion about how sex should be defined or how many sexes exist is irrelevant. Finer categorizations always provide more information, and our de-pseudonymizing attacker friends will use that information if they can. However, going beyond two categories for sex makes little difference, because the additional categories will be hard to guess and even if you could, categories with low prevalence don’t contribute much extra information.3 So, for us, two categories is the right answer.

And what about age? At first glance, converting age into a set of categories seems meaningless. If you code age by the millisecond, then there are 3.156 trillion categories for people born in the last 100 years. If you code age by the decade, there are only 10. Here, the thing to notice is that while you might be able to guess my decade of birth from how I write, you don’t have a snowball’s chance in hell of guessing the millisecond. (See what I did there? People born in certain decades are more likely to use expressions like snowball’s chance in hell?4) If we took age to have some crazy number of categories, we’d have to discount later to reflect the difficulty of guessing. My intuition is that it would be hard to guess age more accurately than around five years, so 20 categories seems reasonable.

Following this kind of logic, I chose a number of categories for each of the demographic variables, trying to hit the upper end of what could be guessed from text. (I’ll provide the actual categories below.)

Feature Number of categories
Age 20
Education level 6
Ethnicity 6
Family status 2
Income 11
Marital status 3
Mental health 3
Native language 2
Occupation 23
Physical health 3
Political leanings 3
Region 23
Religious affiliation 3
Sex 2

If each of the age bins were equally likely, then knowing what bin someone fell into would provide 4.32 bits of information, because 2ᴷ ≈ 20 when K = 4.32. Doing that same calculation for each feature gives the maximum amount of information they could contain.

Feature Number of categories Maximum bits
Age 20 4.32
Education level 6 2.58
Ethnicity 6 2.58
Family status 2 1
Income 11 3.46
Marital status 3 1.58
Mental health 3 1.58
Native language 2 1
Occupation 23 4.52
Physical health 3 1.58
Political leanings 3 1.58
Region 23 4.52
Religious affiliation 3 1.58
Sex 2 1
Total   32.88

But there’s a problem. There are more people aged 30-35 than there are people aged 90-95. So, even if you could guess those age bins perfectly, they’d provide less than 4.32 bits of information on average. However, it turns out that categories need to get pretty damned uneven before information content drops very much. A perfectly balanced 50/50 distribution provides 1 bit of information, but if you switch to a 60/40 distribution, you still get 0.971 bits, and you need to go almost to 90/10 before information content drops to 0.5 bits.5 The same basic thing is true when there are more than two categories.6

So I went through all those features, rated them by how unevenly people are distributed, and tried to discount the bits accordingly. I’ve put the full details of what the original categories are and how I discounted them in a footnote.7

Feature Number of categories Maximum bits Estimated bits
Age 20 4.32 3.9
Education level 6 2.58 2.1
Ethnicity 6 2.58 1.7
Family status 2 1 0.8
Income 11 3.46 2.5
Marital status 3 1.58 1.2
Mental health 3 1.58 0.9
Native language 2 1 0.6
Occupation 23 4.52 4.0
Physical health 3 1.58 1.3
Political leanings 3 1.58 1.5
Region 23 4.52 3.5
Religious affiliation 3 1.58 1.5
Sex 2 1 1
Total   32.88 26.5

But there’s another problem. Female 65 to 70 year-old Asians living in Scotland tend to have different {occupations, family statuses, religious affiliations} than 15 to 20 year-old Latinos living in Southeast Australia. That is, the above features are correlated. So as you look at more of them, they gradually become less surprising and thus contribute less information.

How much less? Answering that the right way would require us to estimate how likely someone is to fall into each of the 20 × 6 × 6 × 2 × 11 × 3 × 3 × 2 × 23 × 3 × 3 × 23 × 3 × 2 = 8,144,737,920 joint categories. That seems hard. But a not-completely-ridiculous approximation is that if a group of variables are all pairwise correlated at a level of ρ>0, then the total information might be reduced by a fraction of ρ.8

So how correlated are those features? In the social sciences, a correlation of 0.5 is considered quite high. That’s plausible for some pairs of variables, e.g. age vs. health or political leaning vs. religious affiliation. But many of those correlations are are probably quite weak, e.g. age vs. native language or region vs. sex vs. marital status.9

Overall, my guess is that correlations reduce the total information by at least 10% but I doubt they reduce it by more than 60%. So I’d think the total information in the above features (if you could guess the categories perfectly) is somewhere between 10.6 and 23.9 bits. Let’s take the average and call it 17.2 bits.

Personality bits

What about personality features? Let’s use the same same recipe we used for demographic features, but faster: To start, let’s give each of the 24 personality features five bins, in deference to dynomight personality notation. That would correspond to 24 × 2.32 = 55.68 bits total, because 2ᴷ ≈ 5 when K = 2.32.

Then we need to discount for correlations. The six main HEXACO personality factors are designed to be uncorrelated, but the different “facets” inside each factor are correlated (usually with a coefficient between 0.3 and 0.6). It seems reasonable to use an overall discount factor of 0.3 to reflect strong intra-factor correlations but weak inter-factor correlations. That suggests 39.0 bits overall.

Style bits

And what about writing style features? How much information do they contain?

This seems hard. Some of the features, like character n-grams are actually themselves long lists of features. (Frequency of typing aaa, frequency of typing aab, etc.) However, many of those features contain little information, since almost everyone types zqx around 0% of the time. And, of course, writing style features are correlated, since people who write realise instead of realize are less likely to put spaces around their em-dashes.

In absence of a better idea, I’m going to give one bit for each leaf node in the above list of style features. I think of this as giving each feature two bins, and then assuming that uneven distributions of features and correlations (which reduce information) are canceled out by the fact that many features deserve more than one bin and that there are probably more “deep” features that aren’t listed (which increase information). This gives us the suspiciously round number of 50.0 bits.

Guessing bits

If you believe the above numbers, then we have at least 17.2 + 39.0 + 50.0 = 106.2 bits of identifying information that we leave clues about when we write. That’s a lot. If you could see all those features, it would be enough to identify people even on a planet with 93 million trillion trillion people.

But to argue that the pseudpocalypse is nigh, it’s not enough to argue that those bits exist. We need to argue that they can and will be guessed from a relatively small amount of text.

So obviously we need to talk about nuclear weapons. In a nuclear detonation, many unstable atoms are created. These spontaneously decay into more-stable atoms, in the process emitting radiation. Some types of atoms are very eager to decay, meaning they release a lot of radiation but stop existing within a few weeks (iodine-131). Others are reluctant to decay, meaning they don’t release as much radiation but they stick around for decades (strontium-90). Others stick around for millions of years, but they produce so little radiation that they’re not a big problem (cesium-135).10 So, the residual radiation produced after a nuclear detonation is the sum of many different exponential curves, one for each isotope created during the detonation.

I suspect that identifying bits in text are sort of like that. Your level of formality and your average sentence length are revealed almost immediately. Your preference for latinate vs. germanic words takes a while to come through. And your social boldness and the fact that you live in Queensland rather than Southeast Australia are revealed very slowly, perhaps so slowly that it’s effectively not revealed at all.

Right. So if you start with 106.2 bits, how many of those do you reveal after writing a given number of words?

I will answer that question through the noble method of making up numbers. But first, let’s calibrate. You just read 4500 words written by me. How well could you guess my demographic and personality features? As a sanity check, I gave the above words to an LLM and asked it to guess. It did unnervingly well. It wasn’t always right, but it usually was, and it did a great job of rating the confidence of the individual predictions.

I don’t think there’s any magical explanation for this. The fact is, if you look at the individual personality and demographic features, guessing them just isn’t that hard. So I’m sure you could do just as well. And given enough time, I’m pretty sure you’d do even better for writing style features.

Even so, you’re probably bad at it. Take the example of GeoGuessr, where people guess a location in the world from a random photo. Random people are sort of OK, but if you pick the top natural talents and have them practice obsessively, they’re really good. I don’t think LLMs are particularly good at guessing features from text, either. They weren’t trained for it. It’s just an emergent property of their general intelligence. The information-theoretic limit is surely much higher.

So here’s a very rough cut: After 4500 words, I’d think it’s possible to guess around:

  • 60% of the demographic features
  • 70% of the personality features
  • 80% writing style features

If we model each of those with a separate exponential, and start them at 17.2 / 39.0 / 50.0 bits, then the total number of identifying bits that remain hidden after writing a given number of words is as plotted here:11

Et voilà, pseudonymity is compromised when you leak 29 bits, which happens after 1071 words.

Seriously?

Of course not. The above figure stands on a creaking tower of tenuous assumptions. I’ve gone through the details of deriving that curve not because you should trust it, but because I think seeing the calculations makes the following points hard to argue with:

  • You have far more than 29 bits of identifying information that you leak into your writing.
  • Some of those bits take a long time to get revealed, but others are revealed pretty quickly.
  • There are enough “fast leaking bits” that you can be identified from a writing sample that’s “pretty small”.

I’ve made lots of debatable choices in terms of choosing features, assigning numbers of categories, estimating distributions across those categories, discounting for correlations, and guessing how many bins can be guessed. Those choices are all individually suspect. But the above points are supported by a pretty wide margin of error. You can make different choices, but it seems very hard to avoid concluding that the above three points are true.12

How would this work?

You might be wondering why I’m using so many made-up numbers. After all, there’s a whole field devoted to identifying authors from text, usually called “stylometry” or “authorship attribution”. They have research papers and competitions and all that. However, as best I can tell, state of the art published results look something like this:

  1. Take 50 people.
  2. Get a few hundred writing samples from each author, each 1000-2000 words long.
  3. Now, take a new writing sample from one of those authors.
  4. Do some standard machine learning stuff.
  5. Hey look, the author can be identified with ~95% accuracy!

That sounds OK, but that’s only identifying people against a pool of ~50 authors. For my claim to be true, similar accuracy would have to be possible with 490 million people. That’s seven orders of magnitude more.

The thing is, the methods those papers are using are extremely weak. All the above math assumes that you’re operating at the “information-theoretic limit”, making perfect use of all available information. If you want to get close to that, we now have some idea how to do it: You apply the “modern” machine learning recipe of gigantic dataset + gigantic neural network + gigantic fortune spent on GPUs. My guess is that for us, that would require something on the order of “all the words ever written” + “tens of billions of parameters” + “tens of millions of dollars”. I couldn’t find a single paper that came remotely close to attempting that.

So I don’t think those papers tell us much, for the same reason that a 3rd-order Markov model trained on a few books doesn’t tell us much about how good computers could be at writing text. LLMs have shown that if you use the above recipe, then computers can get close to the information-theoretic limit for generating text.13 So, I suspect that an LLM-level effort could achieve the same thing for identifying authors.

You might also wonder: Why am I talking about this as some possible future technology? Isn’t that technology just LLMs?

I suspect the technology will be quite LLM-like in how it models human language. But current general-purpose LLMs aren’t trained for this task. They’re good at it “by accident”. So, just like specialized chess AIs can crush LLMs at chess, I suspect specialized stylometry methods could crush general-purpose LLMs at stylometry. It’s just that those specialized stylometry methods don’t seem to exist yet, or at least aren’t public.14 So we shouldn’t imagine that current LLMs are anything close to what’s possible, even if you assume that generic LLM progress stopped today.15

Countermeasures

If this is all true, what could be done about it?

The most obvious “countermeasure” would be to get used to it. I mean, imagine that we did live in a world in which everyone literally had to sign everything they wrote with a unique immutable string. What would happen? I’d expect a mixture of:

  1. People become more comfortable with their “full selves” being public, with less compartmentalization.
  2. People pull back from communicating in public channels, relying more on group chats and the like.
  3. People self-censor.

There are strong historical analogies here, since over the past 20 years many governments and tech companies have in fact decreed that people must sign the things they write with their real names.

The effects seem to vary quite a lot based on the ambient culture and political system. Overall, my impression is that people are already much more comfortable with the idea that their work colleagues might read their dating profile or learn that they go to furry conventions. I’m optimistic that culture will continue to adapt to respect the fact that we all encompass multitudes. This seems healthy.

Some effects seem clearly positive. Self-censoring is not necessarily bad. For example, on the margin, real-names surely stop some teenagers from engaging in cyber-bullying. On the other hand, were you ever a teenager? I’m pretty sure that for anyone who is “different”, having those differences broadcast to the world creates a much larger “bullying surface area”. So the effects are mixed. And adults aren’t as different from teenagers as we might like to think.

Twenty years ago, I might have predicted that real names would discourage people from expressing controversial political ideas online. Superficially, that seems completely wrong. At least in the West, lots of people are very happy to express minority political views, and if you disagree at all, then you can go to hell. But I also tend to think this hides a lot of self-censorship, where most people don’t want engage in political mortal combat and so are cowed by a feisty minority. And, obviously, people in certain countries know that it’s unwise to criticize the Party. So, getting used to it seems like an imperfect solution at best.

Another countermeasure would be to not build this technology, or not make it widely available. In the short term, this seems plausible. As far as I can tell, it’s been possible for years for a modestly-funded group to build a phone app that would identify most people on the street from a photo. And yet, almost no one reading this has access to such an app. If general-purpose LLMs continue to get better at stylometry, it seems entirely possible that AI companies might decide it’s a safety issue and train their AIs to refuse to do it.16 This could work for a while.

But if the technology is possible, it seems certain that governments will build it and use it. They might try to keep it out of the hands of normal people. Certain governments might restrict their own use. My privacy-minded allies always seem very jaded, but it wouldn’t surprise me at all if the Supreme Court declared that a warrant was needed before the FBI could de-pseudonymize a U.S. citizen. But when/if that technology becomes sufficiently cheap, it seems like it would be very difficult to keep it out of the hands of normal people and/or bad actors. My guess is that it’s possible to create a program that’s a few hundred gigabytes large and can run (slowly) on most modern laptops. If that program is made public, it would be hard to put the genie back in the bottle.

There are also technological countermeasures. Most obviously, you could run your writing through a “filter” to try to remove identifying bits, e.g. by asking an LLM to rewrite it. It’s hard to be sure how well this would work, since we don’t have accurate estimates of how many bits you’re starting with or how many bits this would remove. But I’d guess this would be pretty effective if done carefully. The reason is that the number of identifying bits you leave in writing probably isn’t that large, relative to the number needed to identify you. If you “homogenize” your writing to remove all style and personality, you should be able to remove most of those bits. Theoretically, you’ll still leak some information. But I’d think this would substantially increase the amount you could write while remaining pseudonymous.17

But after thinking about it, this makes me sad. Effectively, this countermeasure would preserve pseudonymity by taking writing and destroying all traces of humanity. It seems like this would work well for the “bad” uses of pseudonymity, like cyber-bullying or coordinated violence, but it wouldn’t work at all for the “good” uses, like for example someone who likes to write pseudonymously because they feel like it allows them to be more honest and vulnerable and more fully themselves, damn it.

Generalized pseudpocalypse

Maybe this isn’t just true for writing. Maybe it’s just a feature of our universe that if you interact with the world in any significant way, then you leave traces that make it possible to identify you.

  • If you walk around in public, then you can likely be identified by your face, your gait, your voice, your DNA, your retinas, or your literal fingerprints.

  • Or say you use the internet. Even if you lock down your browser fingerprint and hide your IP address using a VPN or Tor, a sufficiently powerful adversary could still identify you by analyzing global packet flow.

  • Or say you use any phone or computer. You might be identified through keystroke dynamics or the way you jiggle your finger or mouse.

  • Say you buy food at the grocery store, but you pay with cash and somehow shop at a grocery store with no cameras. If you buy more than a handful of items, I’d bet you can still be identified through the patterns in the stuff you buy.

  • (Incidentally, did you ever notice that cash has serial numbers on it? And did you know that more and more ATMs are starting to track those numbers?)

  • Or say you don’t like your car being tracked, so you stop carrying a phone and somehow get lawmakers to outlaw license plates. Still, your car surely has a few small unique scratches, and the engine probably doesn’t sound exactly the same as other cars, even from the same model and year. So if there’s any high-resolution video or audio, that’s still enough to track you.

  • Say you plug your headphones into a charging station at the airport. Your headphones have eccentricities in their analog charging circuits. If someone really wanted to, they could track that.

  • Or say you use electricity. Given high-resolution power-usage data, what can be said about how many people live with you? And what devices you’re using? Probably a lot?

  • Or say you use a toilet. Many places already test sewage and know, at a population level, what drugs people are using and how prevalent various diseases are. Imagine this was upgraded to test many places in the system, with high temporal resolution, possibly correlated with flow measurements from individual houses. That would be exciting.

  • Or say you are a country and you have submarines. Can they be detected by adversaries using distributed acoustic sensing? What about satellite-based synthetic aperture radar? Gravity Gradiometers? Quantum magnetometry?

As far as I can tell, the general trend is that without countermeasures, almost everything can be identified. Countermeasures can make it harder, but they’re costly, and on the whole, the arms race seems to favor the identifier, not the person who doesn’t want to be identified.

I stress: This is not all bad. The goodness / badness of a generalized pseudpocalypse depends on how society is structured. After all, the foundation of civilization is finding ways for people to make deals, and arguably less privacy makes that easier. The degree that we live in a vulnerable world where it’s easy to create civilization-destroying technologies, perhaps we’re very lucky to find ourselves in a non-private world. Still, I do worry that privacy has long provided a kind of “slack” from laws and norms. Historically, that slack has limited the power of institutions to enforce their rules. If privacy is going away, we need to think about how to preserve slack, particularly when institutions don’t want to.

Appendix: Section for skeptical information theory enthusiasts

Above, I tried to estimate the number of bits of identifying information in writing. But what is a “bit”? In general, if x is a discrete random variable, then the Shannon entropy of x in bits is H(x) = ∑ₓ p(x) log₂(1/p(x)), where the sum is over all the values x can take. This is always bounded between zero and the logarithm of the number of values x can take.

That’s fine, but “writing style” is not a discrete variable with a discrete number of categories. So how can I estimate the entropy of writing style? The short answer is that I can’t. What I’ve actually estimated above is the mutual information between writing and writing style.

Let s be a random variable representing writing style. Think of this as some sort of high dimensional continuous vector representing all the quirks of how different people write. And let x be a writing sample of some length. This is discrete because we can represent writing on digital computers. Then what I’ve estimated above is the mutual information I(x;s) = H(x) - H(x|s), where H(x|s) is the conditional entropy of x given s. This can be measured in bits because both H(x) and H(x|s) can be measured in bits. So that’s what my estimate above really says: I(x;s) ≈ 106.2 bits.

Now, you still might be skeptical. Above, I’ve implicitly assumed something like the following was true:

It’s possible to identify one person out of N possibilities with low accuracy if and only if the mutual information between identifying features and writing is at least log₂(N) bits.

That’s how I justified pseudonymity being compromised around 29 bits. But is it really true? Strictly speaking, no. Actually, even more strictly speaking, it’s “not even untrue” because it’s not precise enough to be true or false. But as far as I can tell, basically any precise version of that statement is false. However, it’s possible to find versions of that statement that are true, provided you add some extra not-too-crazy assumptions.

To start, let’s consider an extremely simple model of information leakage.

Theorem. Suppose the world consists of you plus N other people, and suppose each person has a binary identity string, drawn at uniform from the distribution over M-bit binary strings. All these strings are known to the attacker. Suppose you pick some subset of K bits and reveal them. Then the probability that this identifies you is

  (1-2⁻ᴷ)ᴺ.

Furthermore, in order to hold the probability of being identified below

  (1-1/N)ᴺ ≈ exp(-1) ≈ 36.7%,

it is necessary that K ≤ log₂(N).

Proof. The probability that all K observed features collide with any random person in the crowd is 2⁻ᴷ. Thus, the probability of no collisions after checking the crowd of N people (meaning you are the only one matching the observed features) is (1-2⁻ᴷ)ᴺ. □

That’s simple. But it’s not realistic at all, since it assumes that people have immutable binary strings that they leak into their writing. Can we make it more realistic?

Well, there is a simple lower bound. That is, we can say in general that if the mutual information is significantly less than log₂(N), then it’s not possible to reliably identify someone.

Theorem. Suppose N random people are selected and their full writing style features are made public. One person from that group is chosen and produces a writing sample. Then, the attacker must guess who produced it. The average success rate of the attacker (averaged over the random pool, the random choice of author, and the random writing sample) is at most (I(x;s)+1)/log₂(N).

Proof. Let S=(s₁, s₂, s₃, …) be the pool of N styles and let n be a random variable indicating which person was chosen. Fano’s inequality says that the highest possible success rate is bounded by the conditional mutual information between the writing sample x and the identity n, conditioning on the pool of writing styles, i.e. the probability of success is at most

  (I(x;n|S)+1)/log₂(N).

However, we can bound that conditional mutual information as

  I(x;n|S) ≤ I(x;n,S) = I(x;n,sₙ) = I(x;sₙ) = I(x;s).

The first inequality is standard. The second step uses the fact that given n, the writing x is conditionally independent of all styles except the chosen writer. The third step uses the fact that n is conditionally independent of x given sₙ. The last step uses that (x,sₙ) is distributed as (x,s). Substituting this bound gives the claimed result. □

So, if mutual information is much less than log₂(N), reliable identification is impossible, even if the attacker knows all the style vectors perfectly. So, provided you don’t leak that many bits, you’re definitely safe.

But is the converse true? Does leaking more than log₂(N) bits always identify you? The general answer is no. The basic problem is that I(x;s) is the average information that an average person leaks in an average writing sample. Without further assumptions, you can construct scenarios where some rare people and writing samples contain gigantic amounts of information, but most people usually leak nothing. That would mean that the attacker is very certain in some cases but usually learns nothing.

So, to get a guarantee that identification is actually possible, you need to make some kind of additional assumption that the information leakage rate doesn’t vary too much between different writers or between different things they write.

Suppose that p(x,s) is the joint distribution over writing styles s and writing samples x. Let’s suppose that the attacker knows the true style vector ŝ for some person. Then, they will be given a writing sample x that either came from that person or came from a randomly chosen person, and must decide which. Formally, the attacker’s goal is to guess if x was sampled from the writing distribution for that person, p(x|ŝ) or from the population marginal p(x). Intuition suggests that the attacker’s best strategy will be to look at the ratio

  p(x|ŝ)/p(x),

and “accept” x as coming from ŝ if above some threshold, and reject it otherwise. In fact, the Neyman-Pearson lemma guarantees that this is the optimal strategy, in a very strong sense: That ratio contains all the information that’s useful for making that decision.

Now here’s something interesting: Instead of looking at the ratio, the attacker could look at the logarithm of the ratio. It makes no difference since it’s monotonic. But if you take the logarithm of that ratio, and take the expectation over people and over texts, what do you get? Well:

  𝔼 ln (p(x|s)/p(x)) = 𝔼 ln (p(x,s)/(p(x) p(s))) = I(x;s)

It’s the mutual information! So, intuitively, the mutual information is how much an attacker learns about the style of the writer “on average”, where that average is over both writers and text.

The following theorem will look at the average information in text for a writer with a particular style. I’ll define this as

  D(s) = KL(p(X|s) || p(X)).

Intuitively, this is how different the writing of someone with style s is from the population average. That’s because if you take the average of this value over different styles, you get the mutual information. That is, I(x;s) = 𝔼[D(s)].18

Theorem (informal). Suppose that the attacker will observe some text and wishes to classify it as either coming from a writer with specific known style ŝ, or coming from someone with a random style. Suppose that the attacker is only willing to tolerate some small risk ε of a false positive. Provided that D(ŝ) is significantly larger than -ln(ε), the attacker can achieve that, while also keeping the risk of false negatives very low, provided that the variance of how much information is revealed in a random writing sample is bounded.

Theorem. Let D(ŝ) = KL(p(X|ŝ) || p(X)) to be the divergence between the target’s writing distribution and the marginal distribution. Also, define qₜ(x) ∝ p(x|ŝ)ᵗ p(x)¹⁻ᵗ to be the family that interpolates between those two distributions. To formalize the idea that “information leakage” for ŝ doesn’t vary that much, we assume that some constant V exists such that for 0 < t < 1, the variance of log(p(x|ŝ)/p(x)) under qₜ is bounded by V.

Then for any ε satisfying exp(-D) < ε < exp(-D + ½ V), it is possible for the attacker to simultaneously achieve a false positive rate of FPR ≤ ε and a false negative rate of FNR ≤ exp( - ½ (D+ ln ε)² / V). This false positive rate reflects the mistake rate provided the writing sample x came from a randomly chosen other person, while the false negative rate reflects the mistake rate provided the writing sample x actually came from the person with style ŝ.

Proof sketch. Let f be the distribution of l(x) = log(p(x|ŝ)/p(x)) with respect to p(x|ŝ) and let g be the distribution of l(x) with respect to p(x). The stated variance assumption implies a quadratic bound K(u) ≤ D u +½ V u^2 for -1 < u < 0, where K is the cumulant generating function of f. Observe that g is an exponential tilting of f. The attacker’s strategy must be to “accept” x as coming from ŝ if l is above some threshold c and “reject” it otherwise. Use K in a Chernoff bound on the probability l is less than c under f to upper-bound FNR ≤ exp( - ½ (D-c)²/V). Now, using that g(l) = exp(-l) f(l), again use K in a Chernoff bound on the probability l exceeds c under g to upper-bound FPR ≤ exp( -c - ½ (D-c)²/V). Both of these bounds are simultaneously valid when D-V < c < D. Setting c to make the false-positive bound equal to ε gives FPR ≤ ε and FNR ≤ exp( -½ (V - √(V² - 2V(D + ln ε)))²/V). The latter can be relaxed into the stated result using that √(1-x) ≤1-x/2 for 0 ≤ x ≤ 1. □

Now, if we suppose that the attacker wants to find a particular person, with a particular known style s. And suppose that the attacker has a pool of N people and will see one writing sample from each, but wants to limit the total probability of a false positive to δ after seeing one sample from each person. Then, they will need that

  (1-ε)ᴺ ≈ exp(-εN) = (1-δ),

which is satisfied by ε ≈ δ/N. Substituting this into the previous result says that the attacker can hold the total risk of a false positive to δ while achieving a false-negative risk of

  FNR ≤ exp( - ½ (D(s) + ln δ - ln N)² / V).

These results use natural logarithms because the math is easier if you measure information in nats. If you measure information in bits then you would get log₂ δ and log₂ N. (Rescaling D and V appropriately.)

So, again, as long as the average information for user s is significantly larger than log₂ N, the attacker can identify that user with minimal risk of false positives.

Some writers might leak more information (higher D(s)) and some writers might leak less information (lower D(s)). But remember, I(x;s)=𝔼 D(s). So as long as information leakage doesn’t vary too much between people, and assuming that I(x;s) is much larger than log₂ N (and assuming that variance condition), almost everyone can be identified.

  1. Editor’s note: After this sentence was written, many additional hours were devoted to further idiotic tinkering. 

  2. It’s fine. 

  3. A standard binary variable that is 0 or 1 with 50% probability conveys 1 bit of information, while a variable that is 0 / 1 / 2 with probability 49.8% / 49.8% / 0.4% conveys 1.0336 bits. 

  4. People born in certain decades are also presumably more likely to employ see what I did there gambits. 

  5. For example, here is the information content for seven different “bent coins”:

    Probability of landing heads Information
    0.50 (fair coin) 1.000
    0.60 0.971
    0.70 0.881
    0.80 0.722
    0.90 0.469
    0.95 0.286
    0.99 0.081

  6. Here’s a more formal looking version of the table from the previous footnote:

    p(A) p(B) Information
    0.50 0.50 1.000
    0.60 0.40 0.971
    0.70 0.30 0.881
    0.80 0.20 0.722
    0.90 0.10 0.469
    0.95 0.05 0.286
    0.99 0.01 0.081

    You can generate that table by running this code:

    from scipy.stats import entropy
     
    dists = ([0.5, 0.5], [0.6, 0.4], [0.7, 0.3], [0.8, 0.2], [0.9, 0.1], [0.95, 0.05], [0.99, 0.01])
    entropies = [entropy(p, base=2) for p in dists]
    
    print("| p(A) | p(B) | Entropy |")
    print("|------|------|---------|")
    for i in range(len(dists)):
        print(f"| {dists[i][0]:<4.3f} | {dists[i][1]:<4.3f} | {entropies[i]:<7.3f} |")
    

    With three categories, the story is much the same. Things need to get quite uneven before information drops too much:

    p(A) p(B) p(C) Entropy
    0.333 0.333 0.333 1.585
    0.400 0.300 0.300 1.571
    0.500 0.250 0.250 1.500
    0.600 0.200 0.200 1.371
    0.700 0.150 0.150 1.181
    0.800 0.100 0.100 0.922
    0.900 0.050 0.050 0.569
    0.950 0.025 0.025 0.336
    0.990 0.005 0.005 0.091

    You can generate that with this code:

    from scipy.stats import entropy
    
    dists = (
        [1/3, 1/3, 1/3],
        [.4, .3, .3],
        [.5, .25, .25],
        [.6, .2, .2],
        [.7, .15, .15],
        [.8, .1, .1],
        [.9, .05, .05],
        [.95, .025, .025],
        [.99, .005, .005]
    )
    entropies = [entropy(p, base=2) for p in dists]
    
    print("| p(A) | p(B) | p(C) | Entropy |")
    print("|------|------|------|---------|")
    for i in range(len(dists)):
        print(f"| {dists[i][0]:<4.3f} | {dists[i][1]:<4.3f} | {dists[i][2]:<4.3f} | {entropies[i]:<7.3f} |")
    

  7. Roughly speaking, we we should discount those maximum bits as follows:

    • Near even: No discount.
    • “Mildly uneven” (E.g. 70/30 with two categories) Discount by 10%.
    • “Quite uneven” (E.g. 90/10 with two categories) Discount by 50%.
    • “Extremely uneven” (E.g. 99/1 with two categories) Discount by 90%.

    The Shannon entropy of a categorical distribution is - Σᵢ pᵢ log₂ pᵢ. Or, in python:

    import math
    def entropy(probs):
    	return sum(-p * math.log2(p) for p in probs)
    

    Age: It’s hard for me to imagine you could guess age from text with accuracy higher than 5 years. If you assume an age between 0 and 100, that would be 20 categories and log2(20)=4.32 bits. These are mildly non-uniform so I’ll reduce to 3.9.

    Education: I’m assuming 6 categories: less than high school, high school, some college, finished college, master’s degree, doctorate. That would be log2(6)=2.58 bits, but fairly uneven, so I’ll reduce by 20% to reflect that.

    Ethnicity: Assuming 62% white, 11% black, 16% latino, 6% asian, 1.5% indigenous, 3.5% mixed/other, and actually using the entropy formula.

    Family status: I’m using two categories: Children / no children, on the logic that guessing the number of children would be very hard. These are mildly non-uniform, so I’ll drop to 0.8 bits. You could have a third category for having children that are grown and that had left home, but this would be heavily redundant with age.

    Income: The US census gives 11 income brackets. That seems as good a way of discretizing as anything. That would be log2(11) = 3.459 bits, but these are again moderately non-uniform, so I’ll reduce to 2.5.

    Marital status: I’m taking 3 categories (single, married, divorced / widowed / etc). That would be log2(3)=1.58 bits at maximum, but again these are somewhat non-uniform, so I dropped that to 1.2.

    Mental health: I’m using 3 categories: “Healthy”, “chronic condition”, and “severe issues”. Assuming 73% healthy 25% chronic condition, 2% “severe issues”, and using the entropy formula gives 0.9 bits.

    Native language: I’m using 2 categories, namely “English native”, and “non-English native”. These are pretty uneven inside the Anglosphere, so I’ll drop from 1 bit to 0.6 bits.

    Occupation. The BLS classification gives 23 major groups. That would be log2(23)=4.523 bits, but it’s moderately non-uniform, so I’ll reduce to 4 bits.

    Physical health: Assuming 60% “healthy” 30% “chronic condition” 10% “severe issues” and using the entropy formula.

    Political leanings: I’m using three categories (left, center, right). These are fairly uniform so I’m using 1.58 bits.

    Region: I asked an LLM to divide the Anglosphere up into a number of regions with reasonable granularity. With some tinkering, it gave 23 regions: South East England, South West England, Midlands, Northern England, Scotland, Wales, Republic of Ireland, Northern Ireland, Quebec, Ontario, Western Canada, Atlantic Canada, Northeast US, Southern US, Midwest US, Western US, Alaska, Hawaii, Southeast Australia, Western Australia, Queensland, Central & Southern Australia, New Zealand. With LLM-generated population estimates (which looked reasonable) and plugging into the entropy formula, this gave 3.5481 bits.

    # Region Pop (M) pi (Pop/Total) log2⁡(pi) pilog2⁡(pi)
    1 South East England 20.0 0.04062 -4.617 -0.1875
    2 South West England 6.0 0.01219 -6.353 -0.0774
    3 Midlands 11.0 0.02234 -5.485 -0.1225
    4 Northern England 20.0 0.04062 -4.617 -0.1875
    5 Scotland 5.5 0.01117 -6.484 -0.0724
    6 Wales 3.0 0.00609 -7.359 -0.0448
    7 Republic of Ireland 5.0 0.01015 -6.626 -0.0673
    8 Northern Ireland 2.0 0.00406 -7.949 -0.0323
    9 Quebec 9.0 0.01828 -5.774 -0.1055
    10 Ontario 16.0 0.03250 -4.943 -0.1606
    11 Western Canada 13.0 0.02640 -5.247 -0.1385
    12 Atlantic Canada 2.5 0.00508 -7.625 -0.0387
    13 Northeast US 56.0 0.11373 -3.136 -0.3568
    14 Southern US 130.0 0.26401 -1.922 -0.5074
    15 Midwest US 69.0 0.14013 -2.836 -0.3973
    16 Western US 80.0 0.16247 -2.624 -0.4264
    17 Alaska 0.7 0.00142 -9.467 -0.0134
    18 Hawaii 1.4 0.00284 -8.790 -0.0249
    19 Southeast Australia 16.0 0.03250 -4.943 -0.1606
    20 Western Australia 3.0 0.00609 -7.359 -0.0448
    21 Queensland 5.5 0.01117 -6.484 -0.0724
    22 Central & Southern Australia 2.5 0.00508 -7.625 -0.0387
    23 New Zealand 5.3 0.01076 -6.539 -0.0703
      Sum of pilog2⁡(pi)       -3.5481

    Religious affiliation: 3 categories (christian, other religion, atheist / agnostic). These are uniform-ish.

    Sex: 2 categories, near-even 

  8. Consider a set of binary random variables, each of which is equally likely to be 0 and 1, yet all are correlated with a pairwise correlation coefficient of ρ. There are many distributions that satisfy this condition, but a natural choice is an Ising model. If there are many variables, then the entropy per-variable in an Ising model with pairwise correlations of ρ tends to h((1+√ρ)/2), where h is the binary entropy function. We can print out those numbers:

    ρ h((1+√ρ)/2)
    0.0000 1.00000000
    0.1000 0.92661216
    0.2000 0.85048963
    0.3000 0.77121926
    0.4000 0.68826012
    0.5000 0.60087604
    0.6000 0.50801160
    0.7000 0.40803633
    0.8000 0.29811751
    0.9000 0.17212786
    1.0000 0.00000000

    As you can see, the entropy per-variable is always a bit more than 1-ρ. But the Ising model is optimistic, in the sense that it has the highest entropy of all distributions meeting the given conditions. So, screw it, let’s estimate the entropy per-variable to just be 1-ρ. 

  9. If it means anything to you, I asked Kimi 2.6 to hallucinate some numbers:

      Age Edu Eth Fam Inc Mar Mhe Nlg Occ Phe Pol Reg Rel Sex
    Age 1.0 -0.2 0.0 0.6 0.1 0.5 -0.1 0.0 0.2 -0.5 0.1 0.0 0.2 -0.1
    Edu -0.2 1.0 0.3 0.2 0.6 0.2 0.1 0.1 0.7 0.3 0.3 0.2 -0.2 -0.1
    Eth 0.0 0.3 1.0 0.2 0.3 0.1 -0.1 0.7 0.3 -0.3 0.2 0.4 0.4 0.0
    Fam 0.6 0.2 0.2 1.0 0.2 0.7 -0.1 0.0 0.1 0.0 0.1 0.0 0.2 0.1
    Inc 0.1 0.6 0.3 0.2 1.0 0.3 -0.2 0.1 0.7 0.3 0.1 0.2 0.0 -0.1
    Mar 0.5 0.2 0.1 0.7 0.3 1.0 0.2 0.0 0.1 0.2 0.1 0.0 0.2 0.0
    Mhe -0.1 0.1 -0.1 -0.1 -0.2 0.2 1.0 0.0 -0.2 0.4 0.0 0.0 -0.1 0.1
    Nlg 0.0 0.1 0.7 0.0 0.1 0.0 0.0 1.0 0.1 0.0 0.1 0.5 0.3 0.0
    Occ 0.2 0.7 0.3 0.1 0.7 0.1 -0.2 0.1 1.0 0.1 0.2 0.2 0.0 0.3
    Phe -0.5 0.3 -0.3 0.0 0.3 0.2 0.4 0.0 0.1 1.0 0.0 0.1 0.0 0.1
    Pol 0.1 0.3 0.2 0.1 0.1 0.1 0.0 0.1 0.2 0.0 1.0 0.5 0.4 0.1
    Reg 0.0 0.2 0.4 0.0 0.2 0.0 0.0 0.5 0.2 0.1 0.5 1.0 0.2 0.0
    Rel 0.2 -0.2 0.4 0.2 0.0 0.2 -0.1 0.3 0.0 0.0 0.4 0.2 1.0 0.1
    Sex -0.1 -0.1 0.0 0.1 -0.1 0.0 0.1 0.0 0.3 0.1 0.1 0.0 0.1 1.0

    Personally, this doesn’t mean very much to me… 

  10. It’s more complicated than this, because some atoms (e.g. strontium-90) emit more energy per decay than others. And some types of radiation are more harmful to human life than others. 

  11. In general, if you want an exponential curve f(n) that starts at 1 for n=0 and decays to 1-X for n=N, you should choose f(n) = exp(n × ln(1-X) / N). So for demographic features we’re using X=0.6 and N = 4500, meaning f(n) = exp(-0.00020362 × n). For personality features, we’re using X=0.7, meaning f(n) = exp(-0.00026755 × n), and for writing style features, we’re using X = 0.8, meaning f(n) = exp(-0.000357653 × n). So the total number of bits remaining hidden is 17.2 × exp(-0.00020362 × n) + 39.0 × exp(-0.00026755 × n) + 50.0 × exp(-0.000357653 × n). 

  12. OK, what’s the most likely reason I might be wrong? Above, I used math to estimate the information in features, and then I basically made up numbers for how much of that information can be guessed from text. Even so, my greatest concern is that the first part. I’m a bit worried that I might be overestimating the amount of information in the features themselves due to inadequately discounting for correlations. For one thing, there are probably correlations between feature groups. (For example, I’d bet that people who are high in perfectionism are less likely to use lose and loose interchangeably, and that people who live in Northern England are more likely to use the character string colour than people who live in Hawaii.) Also, my crude method of discounting information by ρ due to pairwise correlations of ρ might not discount enough: I used an estimate based on an Ising model, which is the maximum-entropy (highest information) distribution given the correlation constraints. I haven’t been able to figure out how much lower the information could be in the worst-case. 

  13. People debate if this is true for “intelligence”, but it’s definitely true in terms of bit-rate. 

  14. Also, arguably, stylometry is about language. This means that large language models probably have much of what they need baked in. That might explain why they’re pretty good at it just “by accident”. But to do this optimally I think they’d need self-reflection (e.g. access to probabilities of text given different contexts) that current LLMs aren’t typically capable of, and wouldn’t know how to manipulate correctly without task-specific training. 

  15. You could conjecture that near-optimal stylometry abilities are some kind of “emergent property”. But the general lesson so far is that LLMs mostly don’t have emergent properties but are just good at what they’re trained at. (Edit: I withdraw this sentence!) 

  16. (Meta-joke about you—person who works at an AI company—thinking, “maybe we should do that”, coming to this footnote, and seeing this meta-joke.) 

  17. Instead of “homogenizing” writing by imposing a generic style, perhaps it would be better to “camouflage” it by enforcing a very strong but random style. 

  18. Be a little careful here: Typically, the KL-divergence is understood to be measured in nats. But in this article, I’ve measured mutual information in bits. That’s fine, but you need to convert. For example, 106.2 bits = 73.60 nats. 

Life with hazard ratios

2026-07-06 08:00:00

If you read anything about health or longevity, you’ll soon find yourself in a world of hazard ratios. Some study might say that eating more fiber might change your risk of dying by a factor of HR = 0.90. Another might say that occasional smoking might change it by HR = 1.30.

But how much should you care about that? Is HR = 0.90 or HR = 1.30 a lot? What if you don’t want to eat more fiber? What if you like smoking?

Instead of staring at a ratio1, a more sensible thing to do is think about life expectancy.2 But is it possible to convert a hazard ratio to a change in life expectancy? You might reason as follows: Baseline life expectancy is around 75 years. And HR = 0.90 corresponds to a 10% decrease in mortality. So perhaps that hazard ratio corresponds to something like 7.5 extra years of life expectancy?

Unfortunately, that’s completely wrong. To see why, imagine that humans only die by playing Russian roulette. They start playing this once per day at the age of 75, with a revolver containing two bullets and six chambers. If you were to remove one of those two bullets, that would drop the person’s risk of death by HR = 0.5. (One bullet versus two.) But life expectancy would barely change, because even with just one bullet, almost nobody would survive for any significant amount of time past 75.

For contrast, imagine again that humans only die via Russian roulette, but now they do this once per day from birth with a revolver with 2 bullets and 54,786 chambers. (Newborns emerge and instinctively reach for this gigantic gun.) You can show that these people also live 75 years on average. But now, if you remove one of the bullets, life expectancy doubles, because when someone is spared, it takes a long time before they get unlucky again.3

Neither of those is a good model for humans. We’re somewhere between the two, with heart disease and so on instead of revolvers and risks slowly rising as we age instead of suddenly starting at age 75 or staying constant throughout life. But you get the point: If you want to convert a hazard ratio for some intervention to a change in life expectancy, the impact depends on how “spread out” baseline mortality risk is over time. Baseline life expectancy is simply not enough information.

That’s one problem. Here’s another: What even is a hazard ratio? The technical definition is something like:

The hazard ratio at a given time is the rate of an event in the treatment group divided by the rate of that event in the control group.

Hazard ratios are often confused with their more beloved siblings, relative risks. Say you run a trial for 10 years and at the end, 10% of the control group died and 8% of the treatment group. Then the relative risk is RR = 0.8, nice and simple. But relative risks have problems, most notably that if you run a long enough trial, then no one will be alive at the end no matter the intervention, meaning RR = 1.0. That’s not helpful. Intuitively, you can think of the hazard ratio at age 40 as sort of like the relative risk for people between the ages of 39.99 and 40.01.

In real life, interventions have different hazard ratios at different ages. Chemotherapy tends to have better results in younger patients who are more able to endure the side-effects. Having a slightly higher BMI (25-30 rather than 20-25) is associated with an increased risk of mortality in young people, but a decreased risk in the elderly. You may remember from 2020 that COVID’s mortality risk had a different age curve than baseline mortality, meaning the hazard ratio of getting COVID was different at different ages.

This is important, because hazard ratios at different ages have different impacts on life expectancy. A hazard ratio of 0.9 at age 80 prevents more deaths than at age 20, because baseline mortality is higher at 80. But at the same time, if you save the life of a 20 year-old, they have more years in front of them. Beyond that, the hazard ratios at different ages interact: If some intervention decreases mortality at younger ages, that allows more people to reach older ages, increasing how much hazard ratios matter at older ages.4

If we knew the hazard ratio at all ages, we could account for those dynamics. But we don’t, because when estimating hazard ratios, people almost always assume that the hazard ratio is constant.5 We’re quasi-forced to do this because there’s not enough data to estimate a whole time-series of ratios. That’s why papers contain single numbers like HR = 0.90.

So even though Intervention A (say, more fiber) and Intervention B (say, light jogging) might have the same hazard ratio in a paper, those numbers could be the product of different underlying age-dependent effects, meaning those interventions could conceivably lead to vastly different changes in life expectancy.

So is this all hopeless? Are single hazard ratio numbers just too far removed from what we care about to tell us anything meaningful?

Surprisingly, no. It’s mostly OK. If we were a different species, it might be hopeless. But for modern humans in rich countries, mortality happens to be distributed in a way that produces a sort of lucky coincidence: When people estimate constant hazard ratio numbers, they’re implicitly sorta-kinda taking a weighted average of hazard ratios at different ages. And those weights happen to (sorta-kinda) reflect how much changes in mortality at different ages change.

So, I will argue, even if the true intervention has a varying effect, it’s sorta-mostly OK to just take a hazard ratio from a paper and convert it to a change in life expectancy using this curve:

dl_vs_hr_log

If a paper showed that eating more fiber produces a hazard ratio of HR = 0.75, that corresponds to an increase of around 3.7 years. If a paper says that occasional smoking produces a hazard ratio of HR = 1.25, that corresponds to a decrease of around 2.9 years.

This isn’t exact. If the intervention is better (or less bad) for older people this will tends to overestimate the increase (or underestimate the decrease) in life expectancy. If the intervention is worse (or less good) for older people, it will tend to underestimate the increase (or overestimate the decrease) in life expectancy. But as long as the hazard ratio doesn’t vary too much by age, it’s probably not off by more than around 30% in either direction.

The easy case

Say there’s some intervention (eating more fiber or whatever) that multiplies your risk of dying at age t by a factor of HR(t). Then it can be shown that this changes life expectancy by approximately

  ΔL ≈ ∑ₜ ΔHR(t) × P(t) × L(t).

Here, P(t) is the baseline probability of dying at age t. For males in the United States, it looks like this:

Meanwhile, L(t) is conditional life expectancy at age t. That’s the average number of additional years left for someone who reaches age t. For males in the United States, it looks like this:

Finally, ΔHR(t) is the decrease in hazard at age t. You can think of that as just ΔHR(t) = 1 - HR(t). Though if you’re OK with logarithms, there’s a somewhat better approximation that uses logarithms, which I’ve quarantined in a footnote.6

Let’s start with the easy case. What if your intervention has the same effect on mortality at all ages, so HR(t)=HR is just a constant? Then, the above equation simplifies into

  ΔL ≈ ΔHR × L̄,

where

  L̄ = ∑ₜ P(t) × L(t).

This makes sense! Again, P(t) is the baseline probability of dying at age t and L(t) is conditional life expectancy at age t. These are constant, so when you add them up, is just a number. For males in the United States, it happens to be 12.93 years. This quantity has a specific meaning: The average remaining life expectancy for US males when they die. That sounds a bit odd, but think of picking a random death and asking how many additional years people who reach that age live on average. That number is 12.93 years.

So, if an intervention has a constant hazard ratio, the mean change in life expectancy for US males is just

  ΔL ≈ ΔHR × 12.93 years.

Now we’re getting somewhere! If you prevent a fraction ΔHR of deaths, then you increase life expectancy by ΔHR times 12.93 years.

Now remember the naive calculation we started with: Life expectancy for US males is 75.8 years. You might hope that if eating more fiber drops your risk of death by 10%, that would save 7.58 years. Sadly, the above equation says that a 10% drop in risk only increases life expectancy by around 1.293 years—only 0.17 times as much.

This is essentially the observation Keyfitz made in his 1977 paper, “What Difference Would It Make if Cancer Were Eradicated?” Cancer is responsible for 18 percent of deaths, so does that mean eradicating it would increase lifespan by 18 percent, or around 13.6 years? Nope, Keyfitz says, it’s only 2.3 years.

If a cure for cancer were discovered and made available today, 350,000 cancer deaths would be avoided in the next year. The overall death rate would be lower by nearly 18 percent. If the cure were quick and inexpensive, a large fraction of the country’s hospital beds and medical personnel would be released for treatment of other ailments. Patients would be spared untold suffering. Such an implicit analysis underlies government proposals for eradication of cancer. The argument is sound for first effects on mortality but wholly misleading for the long term.

The first effects would soon be offset by more mortality from diseases other than cancer. As a result of the cancer cures, the population would include a higher proportion of people subject to other causes of death. […]

At the extreme, it might be said that everyone dies of something sooner or later, so that, when the effects of the eradication of cancer had shaken down, the same number of deaths would occur as before, and the only benefit would be the substitution of heart and other diseases for cancer. A cure for cancer would only have the effect of giving people the opportunity to die of heart disease.

Cheerful stuff! We can also write our approximation in terms of baseline life expectancy as

  ΔL ≈ ΔHR × 0.17 × 75.8 years,

which makes explicit that 12.93 years is only 0.17 times as large as a naive estimate using baseline life expectancy. The discount factor of 0.17 is sometimes called the “Keyfitz entropy”. You can think of it as measuring how close some population is to playing Russian roulette with 2 bullets in 6 chambers starting at age 75 (a discount factor of just above 0) and playing Russian roulette from birth with 2 bullets and 54,786 chambers (a discount factor of 1.0). It’s typically around 0.15 in rich countries today, though it was historically much higher.

Keyfitz entropy is also much higher in other species like mice (perhaps 0.45). You could argue that this explains why nothing that increases lifespan in mice ever translates to humans. Say caloric restriction or whatever produced the same constant hazard ratio in mice and humans. Then it’s mathematically guaranteed that the percentage increase in life expectancy will be three times smaller in humans, because Keyfitz entropy is three times smaller in humans. It’s harder to increase life expectancy when the baseline mortality distribution is more compressed.7

But that’s all assuming the hazard ratio is the same at all ages. Which it surely isn’t.

The interesting case

Here again is our equation for the change in life expectancy in response to taking some action that changes the risk of mortality at age t by a factor of HR(t):

  ΔL ≈ ∑ₜ ΔHR(t) × P(t) × L(t),

Basically, for each age t, we multiply together three numbers:

  1. ΔHR(t) is the decrease in the chance of dying at age t as a result of whatever intervention you’ve made (e.g. eating more fiber). This reflects that larger decreases in risk lead to larger increases in life expectancy.
  2. P(t) is the baseline probability of dying at age t. This reflects that the hazard ratio is a ratio, so you prevent more deaths when you apply that ratio to ages where the baseline rate is higher.
  3. L(t) is conditional life expectancy at age t. This reflects that you miss out on more years of life if you die when you’re young.

Now notice: The impact of a change ΔHR(t) at age t is the product of the baseline risk of death P(t) and remaining life expectancy L(t). So what really matters is their product, P(t) × L(t):

This shows how sensitive life expectancy is to changes in hazard ratios at different ages. It would be nice if this were constant. Then, the shape of HR(t) wouldn’t matter at all, only the average value. That’s not quite true, but it’s not terribly far from being true.

An equivalent way of writing our equation for the change in life expectancy is

  ΔL ≈ avg(ΔHR) × L̄,

where is still mean “life expectancy at death” (12.93 years for US males) and avg(ΔHR) is the average change in hazard, weighted by the P(t) × L(t) sensitivity curve at different ages.8 While that sensitivity curve isn’t constant, it’s not too curvy, either. Intuitively, it gives a lot of weight to ages between 50 and 90, somewhat less weight to ages between 20 and 50, and little weight to other ages.9

So that’s not too bad. But let’s remember our original problem: You see some number like HR = 0.90 in a paper, and you want to convert it to a change in life expectancy. If the true underlying hazard ratio were constant, then there’s no problem. But if it’s not constant, then what does that HR = 0.90 number even mean?

Numbers in papers

Unfortunately, you almost never get to see the underlying time-dependent HR(t), because there’s almost never enough data to estimate it. So it’s almost never possible to compute the weighted average avg(ΔHR). In reality what you have is probably a single number in a paper. Let’s call that number est(HR). The obvious thing to do would be to plug the change into the above equation in place of avg(ΔHR) and approximate the change in life expectancy as

  ΔL ≈ est(ΔHR) × L̄.

Again, you can just think of est(ΔHR) = 1-est(HR) as being the estimated reduction in hazard. Although, again, I’d prefer you use logarithms if you’re OK with logarithms.10 So the question is: Will that be accurate? How close are est(ΔHR) and avg(ΔHR)?

Well, how do people actually estimate those scalar hazard ratio numbers in papers? Somehow, they’re aggregating together information about hazards at different ages into a single number. But how? Well, it’s complicated. But if there’s a lot of data, you can show that the estimated scalar hazard ratio is approximately11

  est(HR) ≈ Πₜ HR(t)ᵖ⁽ᵗ⁾.

(Pardon the hideous typsetting.) That is, the estimated hazard ratio is the geometric average of age-dependent hazard ratios, weighted by the probability of dying at each age. It follows12 that the estimated change in hazard is approximately

  est(ΔHR) ≈ ∑ₜ P(t) ΔHR(t).

So ideally, we’d estimate life expectancy using avg(ΔHR), which averages the changes ΔHR(t) based on the weights P(t) × L(t). But we can’t do that, because we don’t have access to the ΔHR(t) numbers. What we can do is read a hazard ratio number in a paper, call it est(HR) and then compute the change est(ΔHR). The above equation says that if you do that, you are implicitly (and approximately) averaging the changes ΔHR(t) based on the weights P(t) alone.

The “right” weights used by avg(ΔHR) and the “wrong” weights implicitly used by est(ΔHR) aren’t the same. But they’re not that different. Here’s P(t) × L(t), the weights that we’d like to use to compute avg(ΔHR) and estimate changes in life expectancy accurately:

And here’s P(t), the weights you’re implicitly using if we take a hazard ratio number from a paper and compute est(ΔHR):

They’re different. In particular, the latter weights give more weight to people aged 80-95 and less weight to people aged 20-50. But they’re not terribly different.

Enough math, let’s try it

To start, imagine some intervention that decreases risk by HR(t)=0.9 for all ages.

Here are the results:

Thing Formula Years
Original life expectancy L 75.7769
New life expectancy L’ 76.4127
Exact ΔL ΔL = L - L’ 0.6358
Ideal approximation ΔL ≈ avg(ΔHR) × L̄ 0.6409
Use number from paper ΔL ≈ est(ΔHR) × L̄ 0.6409

Let me explain what’s happening here. I made a simulator that takes actuarial data for how likely US males are to die at various ages. From this, it’s a simple spreadsheet calculation to compute life expectancy L.13 Then I applied a hazard ratio to change the probability of dying at each age, and re-ran the simulator to compute a new life expectancy L’ and the exact difference ΔL. Then I’m showing two approximations of ΔL: The first is the “ideal approximation” using avg(ΔHR), which I’m including mostly to show that my math is good. Finally, I’m showing the approximation you get if you actually fit a Cox proportional hazards model and use the resulting number in est(ΔHR). This corresponds to what you’d get if you plug in a number from a paper.

So, with the above constant hazard ratio HR = 0.90, both approximations are very good. This remains true if you switch to some other constant.

What if the hazard ratio varies? At first, you might think that something like this would be very problematic:

But it’s basically fine:

Thing Formula Years
Original life expectancy L 75.7769
New life expectancy L’ 77.4373
Exact ΔL ΔL = L - L’ 1.6604
Ideal approximation ΔL ≈ avg(ΔHR) × L̄ 1.7451
Use number from paper ΔL ≈ est(ΔHR) × L̄ 1.7121

The reason this is fine is that the changes in the hazard ratio are relatively “high frequency”, meaning they sort of locally average out. To demonstrate this, suppose the hazard ratio is chosen randomly for each 1-year bin:

Then the approximations are even better:

Thing Formula Years
Original life expectancy L 75.7769
New life expectancy L’ 77.4218
Exact ΔL ΔL = L - L’ 1.6449
Ideal approximation ΔL ≈ avg(ΔHR) × L̄ 1.7059
Use number from paper ΔL ≈ est(ΔHR) × L̄ 1.7123

What causes trouble is if the hazard ratio varies systematically between the young and the old. For example, suppose the intervention is useless for newborns, but gradually becomes more helpful as you get older:

My “ideal approximation” would still be pretty accurate, if you could compute it. (Which you can’t, in the real world.) But using a number from a paper leads to an overestimate:

Thing Formula Number
Original life expectancy L 75.7769 years
New life expectancy L’ 77.9031 years
Exact ΔL ΔL = L - L’ 2.1261 years
Ideal approximation ΔL ≈ avg(ΔHR) × L̄ 2.0962 years
Use number from paper ΔL ≈ est(ΔHR) × L̄ 2.7645 years

This happens because est(ΔHR) is implicitly weighted by P(t) which is heavily weighted towards older people, whereas we’d like to use something more like avg(ΔHR) which is weighted by P(t) × L(t) which is somewhat less weighted towards older people. Even so, the error isn’t terrible.

Now, it is possible that plugging in a hazard ratio from a paper could give wildly inaccurate estimates of life expectancy. One such scenario would be an intervention which is amazing for people aged 85-95, but does nothing for anyone else:

Now, the hazard ratio looks good exactly at the ages where est(ΔHR) has the most weight, leading it to hugely overestimate the impact on life expectancy:

Thing Formula Number
Original life expectancy L 75.7769 years
New life expectancy L’ 76.1741 years
Exact ΔL ΔL = L - L’ 0.3972 years
Ideal approximation ΔL ≈ avg(ΔHR) × L̄ 0.3840 years
Use number from paper ΔL ≈ est(ΔHR) × L̄ 1.0989 years

Another nightmare case is an intervention that starts out harmful, but then switches to being helpful at older ages:

Now, using a number from a paper doesn’t even give an estimate with the right sign.

Thing Formula Number
Original life expectancy L 75.7769 years
New life expectancy L’ 75.5006 years
Exact ΔL ΔL = L - L’ -0.2764 years
Ideal approximation ΔL ≈ avg(ΔHR) × L̄ -0.2348 years
Use number from paper ΔL ≈ est(ΔHR) × L̄ +0.2709 years

That’s bad. But I think most interventions probably aren’t like that? My guess is that most real interventions vary somewhat with age, but they do so gradually and without switching sign. In those cases, it’s quite difficult to find cases where plugging in the number from a paper is off by more than 30% or so. If you don’t believe me, just try it.14

TLDR

If we were another species, it might be very hard to convert from hazard ratios to changes in life expectancy. But for modern people in rich countries, there are three lucky coincidences:

  1. Mortality risk happens to be distributed so that you can approximate changes in life expectancy through a simple weighted sum of hazard ratios at different ages, ignoring interactions.
  2. The statistical method that people use to estimate scalar hazard ratios can also be approximated as a weighted sum of hazard ratios at different ages, ignoring interactions.
  3. The weights that you need to estimate life expectancy (from #1) and the weights that are implicitly used to compute hazard ratio numbers (from #2) aren’t the same. But they’re fairly close.

These facts justify taking an estimated hazard ratio number HR from a paper and approximating the change in life expectancy as ΔL ≈ ln(1/HR) × 12.93 years or, if the hazard ratio is close to one and you hate logarithms, as ΔL ≈ (1-HR) × 12.93 years.

dl_vs_hr_both

The number 12.93 years is for US males. It’s the product of Keyfitz entropy (0.17) and baseline life expectancy (75.8 years). It will vary a bit in other populations.

If the true underlying hazard ratio:

  • …is constant across ages, then the above approximation will be extremely good.
  • …decreases as people get older, that approximation will overestimate ΔL. That is, it will make helpful interventions look better than they actually are, and it will make harmful interventions look less bad than they actually are.
  • …increases as people get older, that approximation will underestimate ΔL. That is, it will make helpful interventions look less good than they actually are, and it will make harmful interventions look worse than they actually are.

But as long as the true underlying hazard ratio isn’t too crazy, there’s probably not more than ~30% error in either direction.

Finally, two major caveats: First, the above discussion assumes that the hazard ratio was estimated by running a trial on people of all ages. In general, est(ΔHR) implicitly gives weight to different ages proportional to how many deaths occur at those ages in the baseline population in the trial. If there’s a minimum age of, say, 50 years old, that won’t change too much because most of the mass of P(t) is above the age of 50 anyway. But if there’s a minimum age of 70, or a maximum age of 50, that could make a huge difference if the true hazard ratio is different at the ages that weren’t seen.

Second, these are estimates for the life expectancy for a population. But you are not a population. In some sense, your genetics and lifestyle mean you have your own “personal Keyfitz entropy”, reflecting how spread out your mortality would be for you if you led millions random lives. If you drive safely and use an air purifier and eat well and get exercise and don’t smoke, that likely means your personal life expectancy is higher than average. But it also probably means that your personal Keyfitz entropy is lower than average.15 So, if you make your lifestyle even better by eating more fiber or whatever, even if that produces the same hazard ratio for you as for other people, it would still likely lead to smaller increases in life expectancy, for the same reason that the same hazard ratio produces smaller changes in lifespan in humans compared to mice. What we really need is some interventions strong enough to break the math behind these approximations and free us from Keyfitz tyranny.

  1.  

  2. I know, I know, you care about quality of life, not just years of life. I agree, some number that measures health and vitality, maybe disability-adjusted life years or quality-adjusted life years, would be better. But these are hard to estimate and so are rarely reported. Anyway, in practice most interventions that make you more vital tend to make you live longer and vice versa, so focusing on life expectancy isn’t too bad. 

  3. In this model, the number of days of life follows a geometric distribution with p = (number of bullets) / (number of chambers). So the mean life expectancy is 1/p days or (number of chambers) / (number of bullets) days. With 54,786 chambers and 2 bullets, that works out to 75 years. And if you drop down to one bullet, then it increases to 150 years. 

  4. If some intervention would have reduce mortality among people aged ≥ 60 in prehistorical tribal bands, that wouldn’t have increased life expectancy very much, because most people didn’t make it to 60. But compared to prehistorical tribal bands, we have in fact vastly reduced mortality at younger ages. And so, today, reducing mortality for people aged ≥ 60 will increase life expectancy a lot. 

  5. You might think this is stupid. Why change a relative risk into a hazard ratio if you’re just going to assume it’s constant? Isn’t that pointless? Well, no. Remember how relative risks always go to 1.0 for long enough trials as everyone in both the treatment and control groups departs our coil? That doesn’t happen with constant hazard ratios. 

  6. It’s usually (though not always) better to use ΔHR(t) = ln(1/HR(t)). This correctly reflects, for example, that if all hazard ratios go to zero, then life expectancy goes to infinity, yay. These two approximations are almost identical for hazard ratios that are close to one because ln(1/r) ≈ (1-r) when r is close to one. So if you are terrified of logarithms but you’ve made it to the end of this footnote anyway, you’re not missing out on too much. 

  7. There’s a degree of circularity to this argument. It assumes that hazard ratios transfer better between species than changes in life expectancy. That might be true, but it would be an empirical / biological fact, not something that’s guaranteed by logic. 

  8. To see this, note that ΔL ≈ ∑ₜ ΔHR(t) × P(t) × L(t) = L̄ × ∑ₜ ΔHR(t) × (P(t) × L(t) / L̄) = L̄ × avg(ΔHR)

  9. A pretty decent approximation turns out to be

      avg(ΔHR) ≈ 0.27 × avg₂₀₋₅₀(ΔHR) + 0.73 × avg₅₀₋₉₀(ΔHR),

    where avg₂₀₋₅₀(ΔHR) represents a flat average of the change over the ages 20 to 50 and avg₅₀₋₉₀(ΔHR) represents a flat average over the ages 50 to 90. 

  10. That is, it’s better to use est(ΔHR) = ln(1/est(HR)). This is close to 1-est(HR) when est(HR) is close to one. 

  11. If there is an infinite amount of data, the typical method reduces to solving

      ∑ₜ (P(t) + P’(t)) × π(t, HR) = ∑ₜ P’(t),

    for HR. Here, P’(t) is the chance of dying at age t after the hazard ratio has been applied, and π(t, HR) is the probability that, if a death occurred at time t, it was in the treatment group. Of course, the true probability that a death is in the treatment group is P’(t) / (P(t) + P’(t)). The standard “proportional Cox” model assumes that the hazard ratio is constant and so replaces this raw fraction with a model-based one, namely

      π(t, HR) = S’(t) × HR / (S(t) + S’(t) × HR).

    This reflects the fact that at age t, a fraction S(t) of controls are alive and each of these have some chance μ(t) of dying, so P(t)=S(t) × μ(t). Meanwhile, a fraction S’(t) of the treatment group is alive, and these each have a chance HR × μ(t) of dying, meaning that P’(t) = S’(t) × HR × μ(t). If you substitute these equations for P(t) and P’(t) into the second equation above, the factor of μ(t) conveniently cancels and you get π(t, HR) as written.

    In effect, the hazard ratio’s job is to attribute deaths to the treatment versus the control group. Now, if the true time-varying HR(t) is close to one, then it can be shown that the estimated hazard ratio est(HR) approximately satisfies

      ln(est(HR)) ≈ ∑ₜ P(t) ln(HR(t))

  12. The geometric average is equivalent to the condition that

      ln(est(HR)) ≈ ∑ₜ P(t) ln(HR(t))

    Using the “better” approximation that ΔHR(t) = ln(1/HR(t)) and *est(ΔHR)=ln(1/est(HR)), it follows that

      est(ΔHR) ≈ ∑ₜ P(t) ΔHR(t).

    You can justify interpreting that same equation using est(ΔHR) = 1-est(HR) and ΔHR(t)=1-HR(t) from the fact that these are almost the same when HR(t) is close to one. 

  13. This simulator pretends that people live for integer numbers of years. That’s not true in reality, of course, but it makes the simulator easier to implement and understand and makes little difference in practice. 

  14. In the simulation, “true ΔL” is what I called “exact ΔL” above, while “approximation (log)” is what I called “ideal approximation” and “Cox fitted” is what I called “Use number from paper”. 

  15. The way modern human mortality is distributed, even if your healthy lifestyle were to reduce mortality by a constant factor at all ages, that still has the effect of decreasing Keyfitz entropy. 

Blink if you’re human

2026-06-26 08:00:00

I write every word I post on this blog myself. I can’t prove this, of course, but there’s some evidence:

  • This blog existed before AI could write blog posts.
  • If you put any of my posts into an AI-detector they will (I assume) come back squeaky clean.

And now let me add this: I, dynomight, guarantee that every word I post here is the product of me physically hitting keys with my fingers. The only exceptions would be quotes from other humans or something that’s clearly labeled as an AI output.

How is that evidence? Well, say you think I’m a low quality person and I do use AI but I’m lying and I’ve figured out how to evade AI-detectors. OK, ouch. But consider: It’s extremely likely that AI-detectors will improve in the future. (More precisely, it’s likely that future AI-detectors will be better than current AI-detectors at detecting current AI.) If I were using AI, and a future AI detector later caught me, the fact that I made the above promise would be really embarrassing.

You may be thinking that this looks gross and self-congratulatory. So I’d like to stress that the above guarantee is carefully worded. I do often use AI “for research”, just not “for writing”. (We’ll come back to that distinction.) And I don’t think there’s anything intrinsically wrong with using AI to write blog posts. I don’t do it personally, mostly because:

  1. I like writing.
  2. The act of writing itself helps me figure stuff out.
  3. This is a hobby. If you start automating your own hobbies—just what the hell are you doing?

I also don’t use AI for writing because—can we just admit it?—no one wants to read AI-generated essays. Or, rather, people love reading AI-generated essays, but when they want to read one, they will ask an AI for it themselves, thank you very much.

I know the counterarguments. What does it matter where the words came from? Shouldn’t you judge them on their own merits? Maybe. That’s a legitimate way to look at things. But empirically, I think most people don’t agree.

(I also know you’re counting the em-dashes. Count away, I’m still human.)

Here’s an oddly neglected question: Take all the essays that are AI-generated or heavily AI-assisted by one person and then given to someone else to read. In what percentage of cases does the first person disclose the AI usage? Ignore everything related to education if you want. You can even ignore emails. I suspect the answer is still <20%.

Why do people care about this? Several reasons. One is proof of work. If I, a human, write eight thousand plausible-seeming words about vitamin D, that proves that I’ve put some time and effort into understanding vitamin D. That suggests giving some weight to my opinion, even if just to best exploit the wisdom of crowds. That doesn’t work if my essay is secretly AI-generated.

And writing isn’t just cold clinical information-sharing. It’s a kind of parasocial interaction. I know “parasocial” sounds sinister, but I maintain that parasocial relationships are often a perfectly healthy way to adapt our primitive social instincts to the modern world. Anyway, good or bad, that’s part of it.

I bring this up because I’m worried that blogs are heading into a sort of lemon market. You’ve surely had the experience of reading an essay only to slowly become dismayed as you realize it was AI-written. What’s the equilibrium? I expect that some people have already cut back on reading essays, at least from non-established authors. Over time, I expect this will lead to fewer humans writing essays, further increasing the density of AI-generated content, driving more people to cut back on reading, et cetera. This is bad because blogs are good.

As that cycle turns, social norms are also changing. Cast your mind back to the old world, five years ago. At that time, if you had started a blog and posted AI-generated essays without telling anyone, I’m reasonably certain that would have been considered a dick move. (Future generations will marvel.) But today, the largest corporations appear to do that all the time. There’s incredible momentum towards a world where AI can be used anywhere, for any purpose, with no disclosure, and that’s fine.

But it is fine! At this point, trying to bully people into proactive disclosure is just a tax on honesty / conscientiousness / integrity. Instead, I suggest we agree that arbitrary usage is, by default, fine. Instead, let’s work at the other end: If you have chosen to impose limits on your AI usage, then state those limits publicly. If you’re human, tell me.

Obviously, this is no panacea. People can lie. But they can’t do so without taking some reputational risk, because if you use AI and lie about it, how long will your secret stay safe? No one knows because for once the unpredictability of technological change is on our side.


However. HOWEVER. I am not suggesting that we should bully writers into declaring that they are AI-free. I think that’s a terrible idea, because AI use comes on a spectrum. Already today, most people surely use it at least a little. (Do you avert your eyes when AI summaries come up at the top of search results?) Arguably, most people should use AI at least a little. We need to acknowledge that writing is entering the centaur era.

For context: Computers beat humans at chess in 1997. But for years after that, human + AI “centaur” teams could still beat both the best humans and the best chess AIs. Slowly, the value humans contribute to those teams has diminished, and today it’s somewhat unclear if centaurs still hold any advantage over pure AIs.

Humans are still better at blogging than AIs. (Though perhaps not better at literary short fiction.) In chess time, blogging is still pre-1997. But it’s a historical coincidence that no one seems to have cared about centaur chess before 1997. If people had tried, I suspect centaur chess teams could have beaten the best human players much earlier. So, to stretch our analogy, I’d put blogging around 1990 in chess time, in an alternate timeline where there was vast interest in centaur chess in the 1970s and 1980s.

I mean, what exactly can you do while still considering your essay “human written”? Can you:

  1. …look at AI summaries at the top of search results?
  2. …ask AI to find spelling or grammar errors?
  3. …use AI as an advanced thesaurus? (“Give me 50 words with meanings interpolating between ‘aggressive’ and ‘punctilious’.”)
  4. …ask AI factual questions when doing research?
  5. …trust the answers, or verify them yourself?
  6. …ask AI for options to rephrase an awkward sentence?
  7. …use those options verbatim?
  8. …ask AI for high-level organizational suggestions?
  9. …ask AI to to make figures / tables / code?
  10. …run an entire essay through an AI to “clean it up”?
  11. …ask an AI to give a rough prototype of the next section?

I don’t feel super-comfortable saying this, but I sometimes do all of those except #7, #10, and #11.

Wait! Let me explain! I probably do #3 or #6 around once per post. For #5, I usually verify, but when trying to understand something, I read a lot of sources. I try to mentally mark AI-derived facts as unreliable, but I don’t formally track the provenance of every single part of my mental model. I rarely do #8, and even-more rarely accept the suggestions, because AI seems to dislike me as a person and wants to purify my writing of all life and personality. But, in want of a human editor, I sometimes find it helpful. And no matter what, if any information flows from AI into my writing, it does so through my fingers, being written in my own words, never cutting and pasting, not a single word, never-ever.

On a spectrum where 0 = “refuses to look at AI summaries in web searches” and 100 = “puts a single prompt into an AI and posts the output without revisions”, I’d put myself at, I don’t know, 10?

Again, saying all that feels gross. (Somehow it feels like admitting to something shameful and simultaneously an exercise in arrogant self-congratulation? It’s remarkable.) I don’t know how my position on that spectrum compares to other writers, because almost no one discloses any AI usage at all.

But come on people. Democracy dies in darkness! We’re now at the point where readers default to assuming some relatively high (and increasing) level. I’m convinced that many people use AI in ways that are almost completely unobjectionable, but they’re too scared to admit it. This muddies the distinction between different parts of the spectrum, and exacerbates the dynamic where people are too afraid to read anything, lest they later realize it is “slop”.

We need to come to terms with the idea that for most writers, the optimal amount of AI usage is not zero. I’m sure that most people would say that some kinds of usage are normal / expected / good, while other kinds are aberrant / duplicitous / slop. But people have different opinions, and this is all shifting as technology and culture develop.

Unsurprisingly, I like the idea of people drawing the line close to where I did. But I’m willing to accept a fairly wide range, provided you’re upfront about it. Usually, if I sense the invisible hand of heavy AI editing, I sigh and unsubscribe. But Trevor Klee (an excellent blogger) has a couple posts where he says, “here’s an output from ChatGPT I thought was interesting.” Not only did I not unsubscribe, I actually attempted to read that output.

Still, I think it’s important to draw some line, not just to communicate to the outside world, but also for yourself. There’s a very blurry boundary between using AI “for research” or “to catch grammatical errors” and using it “for writing”. It’s very easy to slip from asking AI factual questions, to asking it to find errors in what you wrote, to asking it to fix those errors, to asking it to generate whole paragraphs of text. Each of those steps is easy to justify. So if you want to operate at some position on the spectrum, it’s probably best to choose some boundaries and then enforce them.

(AI used in the construction of this post: None.)