pookie3000/paul_graham_all_essays huggingface dataset:
|  
  
August 2020  
  
Some politicians are proposing to introduce wealth taxes in addition to income
and capital gains taxes. Let's try modeling the effects of various levels of
wealth tax to see what they would mean in practice for a startup founder.  
  
Suppose you start a successful startup in your twenties, and then live for
another 60 years. How much of your stock will a wealth tax consume?  
  
If the wealth tax applies to all your assets, it's easy to calculate its
effect. A wealth tax of 1% means you get to keep 99% of your stock each year.
After 60 years the proportion of stock you'll have left will be .99^60, or
.547. So a straight 1% wealth tax means the government will over the course of
your life take 45% of your stock.  
  
(Losing shares does not, obviously, mean becoming _net_ poorer unless the
value per share is increasing by less than the wealth tax rate.)  
  
Here's how much stock the government would take over 60 years at various
levels of wealth tax:  
  
| wealth tax| government takes  
---|---  
0.1%| 6%  
0.5%| 26%  
1.0%| 45%  
2.0%| 70%  
3.0%| 84%  
4.0%| 91%  
5.0%| 95%  
  
A wealth tax will usually have a threshold at which it starts. How much
difference would a high threshold make? To model that, we need to make some
assumptions about the initial value of your stock and the growth rate.  
  
Suppose your stock is initially worth $2 million, and the company's trajectory
is as follows: the value of your stock grows 3x for 2 years, then 2x for 2
years, then 50% for 2 years, after which you just get a typical public company
growth rate, which we'll call 8%.  Suppose the wealth tax threshold is $50
million. How much stock does the government take now?  wealth tax| government
takes  
---|---  
0.1%| 5%  
0.5%| 23%  
1.0%| 41%  
2.0%| 65%  
3.0%| 79%  
4.0%| 88%  
5.0%| 93%  
  
It may at first seem surprising that such apparently small tax rates produce
such dramatic effects. A 2% wealth tax with a $50 million threshold takes
about two thirds of a successful founder's stock.  
  
The reason wealth taxes have such dramatic effects is that they're applied
over and over to the same money. Income tax happens every year, but only to
that year's income. Whereas if you live for 60 years after acquiring some
asset, a wealth tax will tax that same asset 60 times. A wealth tax compounds.  
  
  
  
  
  
  
  
**Note**  
  
 In practice, eventually some of this 8% would come in the form of
dividends, which are taxed as income at issue, so this model actually
represents the most optimistic case for the founder.  
  
  
  
  
  

* * *  
  
---
|  
  
March 2021  
  
The secret curse of the nonprofit world is restricted donations. If you
haven't been involved with nonprofits, you may never have heard this phrase
before. But if you have been, it probably made you wince.  
  
Restricted donations mean donations where the donor limits what can be done
with the money. This is common with big donations, perhaps the default. And
yet it's usually a bad idea. Usually the way the donor wants the money spent
is not the way the nonprofit would have chosen. Otherwise there would have
been no need to restrict the donation. But who has a better understanding of
where money needs to be spent, the nonprofit or the donor?  
  
If a nonprofit doesn't understand better than its donors where money needs to
be spent, then it's incompetent and you shouldn't be donating to it at all.  
  
Which means a restricted donation is inherently suboptimal. It's either a
donation to a bad nonprofit, or a donation for the wrong things.  
  
There are a couple exceptions to this principle. One is when the nonprofit is
an umbrella organization. It's reasonable to make a restricted donation to a
university, for example, because a university is only nominally a single
nonprofit. Another exception is when the donor actually does know as much as
the nonprofit about where money needs to be spent. The Gates Foundation, for
example, has specific goals and often makes restricted donations to individual
nonprofits to accomplish them. But unless you're a domain expert yourself or
donating to an umbrella organization, your donation would do more good if it
were unrestricted.  
  
If restricted donations do less good than unrestricted ones, why do donors so
often make them? Partly because doing good isn't donors' only motive. They
often have other motives as well — to make a mark, or to generate good
publicity , or to comply with regulations or corporate policies. Many
donors may simply never have considered the distinction between restricted and
unrestricted donations. They may believe that donating money for some specific
purpose is just how donation works. And to be fair, nonprofits don't try very
hard to discourage such illusions. They can't afford to. People running
nonprofits are almost always anxious about money. They can't afford to talk
back to big donors.  
  
You can't expect candor in a relationship so asymmetric. So I'll tell you what
nonprofits wish they could tell you. If you want to donate to a nonprofit,
donate unrestricted. If you trust them to spend your money, trust them to
decide how.  
  
  
  
  
  
**Note**  
  
 Unfortunately restricted donations tend to generate more publicity than
unrestricted ones. "X donates money to build a school in Africa" is not only
more interesting than "X donates money to Y nonprofit to spend as Y chooses,"
but also focuses more attention on X.  
  
**Thanks** to Chase Adam, Ingrid Bassett, Trevor Blackwell, and Edith Elliot
for reading drafts of this.  
  
  
---  
  
  

* * *  
  
---
|  
  
March 2005  
  
_(In the process of answering an email, I accidentally wrote a tiny essay
about writing. I usually spend weeks on an essay. This one took 67 minutes—23
of writing, and  44 of rewriting.)_  
  
I think it's far more important to write well than most people realize.
Writing doesn't just communicate ideas; it generates them. If you're bad at
writing and don't like to do it, you'll miss out on most of the ideas writing
would have generated.  
  
As for how to write well, here's the short version: Write a bad version 1 as
fast as you can; rewrite it over and over; cut ~~out~~ everything unnecessary;
write in a conversational tone; develop a nose for bad writing, so you can see
and fix it in yours; imitate writers you like; if you can't get started, tell
someone what you plan to write about, then write down what you said; expect
80% of the ideas in an essay to happen after you start writing it, and 50% of
those you start with to be wrong; be confident enough to cut; have friends you
trust read your stuff and tell you which bits are confusing or drag; don't
(always) make detailed outlines; mull ideas over for a few days before
writing; carry a small notebook or scrap paper with you; start writing when
you think of the first sentence; if a deadline forces you to start before
that, just say the most important sentence first; write about stuff you like;
don't try to sound impressive; don't hesitate to change the topic on the fly;
use footnotes to contain digressions; use anaphora to knit sentences together;
read your essays out loud to see (a) where you stumble over awkward phrases
and (b) which bits are boring (the paragraphs you dread reading); try to tell
the reader something new and useful; work in fairly big quanta of time; when
you restart, begin by rereading what you have so far; when you finish, leave
yourself something easy to start with; accumulate notes for topics you plan to
cover at the bottom of the file; don't feel obliged to cover any of them;
write for a reader who won't read the essay as carefully as you do, just as
pop songs are designed to sound ok on crappy car radios;  if you say anything
mistaken, fix it immediately; ask friends which sentence you'll regret most;
go back and tone down harsh remarks; publish stuff online, because an audience
makes you write more, and thus generate more ideas; print out drafts instead
of just looking at them on the screen; use simple, germanic words; learn to
distinguish surprises from digressions; learn to recognize the approach of an
ending, and when one appears, grab it.  
  
  
---  
  
  
---  
| | Russian Translation  
  
| | | | Japanese Translation  
  
  
| | Romanian Translation  
  
| | | | Spanish Translation  
  
  
| | German Translation  
  
| | | | Chinese Translation  
  
  
| | Hungarian Translation  
  
| | | | Catalan Translation  
  
  
| | Danish Translation  
  
| | | | Arabic Translation  
  
  
  
  
  

* * *  
  
---
|  
  
May 2021  
  
Noora Health, a nonprofit I've supported for years, just launched a new NFT.
It has a dramatic name, _Save Thousands of Lives_, because that's what the
proceeds will do.  
  
Noora has been saving lives for 7 years. They run programs in hospitals in
South Asia to teach new mothers how to take care of their babies once they get
home. They're in 165 hospitals now. And because they know the numbers before
and after they start at a new hospital, they can measure the impact they have.
It is massive. For every 1000 live births, they save 9 babies.  
  
This number comes from a _study_ of 133,733 families at 28 different hospitals
that Noora conducted in collaboration with the Better Birth team at Ariadne
Labs, a joint center for health systems innovation at Brigham and Womens
Hospital and Harvard T.H. Chan School of Public Health.  
  
Noora is so effective that even if you measure their costs in the most
conservative way, by dividing their entire budget by the number of lives
saved, the cost of saving a life is the lowest I've seen. $1,235.  
  
For this NFT, they're going to issue a public report tracking how this
specific tranche of money is spent, and estimating the number of lives saved
as a result.  
  
NFTs are a new territory, and this way of using them is especially new, but
I'm excited about its potential. And I'm excited to see what happens with this
particular auction, because unlike an NFT representing something that has
already happened, this NFT gets better as the price gets higher.  
  
The reserve price was about $2.5 million, because that's what it takes for the
name to be accurate: that's what it costs to save 2000 lives. But the higher
the price of this NFT goes, the more lives will be saved. What a sentence to
be able to write.  
  
  
---  
  
  

* * *  
  
---
|  
  
April 2020  
  
I recently saw a _video_ of TV journalists and politicians confidently saying
that the coronavirus would be no worse than the flu. What struck me about it
was not just how mistaken they seemed, but how daring. How could they feel
safe saying such things?  
  
The answer, I realized, is that they didn't think they could get caught. They
didn't realize there was any danger in making false predictions. These people
constantly make false predictions, and get away with it, because the things
they make predictions about either have mushy enough outcomes that they can
bluster their way out of trouble, or happen so far in the future that few
remember what they said.  
  
An epidemic is different. It falsifies your predictions rapidly and
unequivocally.  
  
But epidemics are rare enough that these people clearly didn't realize this
was even a possibility. Instead they just continued to use their ordinary
m.o., which, as the epidemic has made clear, is to talk confidently about
things they don't understand.  
  
An event like this is thus a uniquely powerful way of taking people's measure.
As Warren Buffett said, "It's only when the tide goes out that you learn who's
been swimming naked." And the tide has just gone out like never before.  
  
Now that we've seen the results, let's remember what we saw, because this is
the most accurate test of credibility we're ever likely to have. I hope.  
  
  
  
  
---  
  
  
---  
Finnish Translation  
| | German Translation  
  
French Translation  
  
  
  
  

* * *  
  
---
|  
  
Kevin Kelleher suggested an interesting way to compare programming languages:
to describe each in terms of the problem it fixes. The surprising thing is how
many, and how well, languages can be described this way.  
  
**Algol:** Assembly language is too low-level.  
  
**Pascal:** Algol doesn't have enough data types.  
  
**Modula:** Pascal is too wimpy for systems programming.  
  
**Simula:** Algol isn't good enough at simulations.  
  
**Smalltalk:** Not everything in Simula is an object.  
  
**Fortran:** Assembly language is too low-level.  
  
**Cobol:** Fortran is scary.  
  
**PL/1:** Fortran doesn't have enough data types.  
  
**Ada:** Every existing language is missing something.  
  
**Basic:** Fortran is scary.  
  
**APL:** Fortran isn't good enough at manipulating arrays.  
  
**J:** APL requires its own character set.  
  
**C:** Assembly language is too low-level.  
  
**C++:** C is too low-level.  
  
**Java:** C++ is a kludge. And Microsoft is going to crush us.  
  
**C#:** Java is controlled by Sun.  
  
**Lisp:** Turing Machines are an awkward way to describe computation.  
  
**Scheme:** MacLisp is a kludge.  
  
**T:** Scheme has no libraries.  
  
**Common Lisp:** There are too many dialects of Lisp.  
  
**Dylan:** Scheme has no libraries, and Lisp syntax is scary.  
  
**Perl:** Shell scripts/awk/sed are not enough like programming languages.  
  
**Python:** Perl is a kludge.  
  
**Ruby:** Perl is a kludge, and Lisp syntax is scary.  
  
**Prolog:** Programming is not enough like logic.  
  
  
  
  
  
  
---  
  
  
---  
| | Japanese Translation  
  
| | | | French Translation  
  
  
| | Portuguese Translation  
  
  
  
  
  

* * *  
  
---
|  
  
November 2016  
  
If you're a California voter, there is an important proposition on your ballot
this year: Proposition 62, which bans the death penalty.  
  
When I was younger I used to think the debate about the death penalty was
about when it's ok to take a human life. Is it ok to kill a killer?  
  
But that is not the issue here.  
  
The real world does not work like the version I was shown on TV growing up.
The police often arrest the wrong person. Defendants' lawyers are often
incompetent. And prosecutors are often motivated more by publicity than
justice.  
  
In the real world, about 4% of people sentenced to death are innocent. So this
is not about whether it's ok to kill killers. This is about whether it's ok to
kill innocent people.  
  
A child could answer that one for you.  
  
This year, in California, you have a chance to end this, by voting yes on
Proposition 62. But beware, because there is another proposition, Proposition
66, whose goal is to make it easier to execute people. So yes on 62, no on 66.  
  
It's time.  
  
  
---  
  
  

* * *  
  
---
|  
  
January 2020  
  
When I was young, I thought old people had everything figured out. Now that
I'm old, I know this isn't true.  
  
I constantly feel like a noob. It seems like I'm always talking to some
startup working in a new field I know nothing about, or reading a book about a
topic I don't understand well enough, or visiting some new country where I
don't know how things work.  
  
It's not pleasant to feel like a noob. And the word "noob" is certainly not a
compliment. And yet today I realized something encouraging about being a noob:
the more of a noob you are locally, the less of a noob you are globally.  
  
For example, if you stay in your home country, you'll feel less of a noob than
if you move to Farawavia, where everything works differently. And yet you'll
know more if you move. So the feeling of being a noob is inversely correlated
with actual ignorance.  
  
But if the feeling of being a noob is good for us, why do we dislike it? What
evolutionary purpose could such an aversion serve?  
  
I think the answer is that there are two sources of feeling like a noob: being
stupid, and doing something novel. Our dislike of feeling like a noob is our
brain telling us "Come on, come on, figure this out." Which was the right
thing to be thinking for most of human history. The life of hunter-gatherers
was complex, but it didn't change as much as life does now. They didn't
suddenly have to figure out what to do about cryptocurrency. So it made sense
to be biased toward competence at existing problems over the discovery of new
ones. It made sense for humans to dislike the feeling of being a noob, just
as, in a world where food was scarce, it made sense for them to dislike the
feeling of being hungry.  
  
Now that too much food is more of a problem than too little, our dislike of
feeling hungry leads us astray. And I think our dislike of feeling like a noob
does too.  
  
Though it feels unpleasant, and people will sometimes ridicule you for it, the
more you feel like a noob, the better.  
  
  
  
  
  
  
---  
  
  
---  
Japanese Translation  
| | Arabic Translation  
  
French Translation  
| | Korean Translation  
  
Polish Translation  
| | Chinese Translation  
  
Serbian Translation  
| | French Translation  
  
  
  
  

* * *  
  
---
|  
  
November 2022  
  
Since I was about 9 I've been puzzled by the apparent contradiction between
being made of matter that behaves in a predictable way, and the feeling that I
could choose to do whatever I wanted. At the time I had a self-interested
motive for exploring the question. At that age (like most succeeding ages) I
was always in trouble with the authorities, and it seemed to me that there
might possibly be some way to get out of trouble by arguing that I wasn't
responsible for my actions. I gradually lost hope of that, but the puzzle
remained: How do you reconcile being a machine made of matter with the feeling
that you're free to choose what you do?   
  
The best way to explain the answer may be to start with a slightly wrong
version, and then fix it. The wrong version is: You can do what you want, but
you can't want what you want. Yes, you can control what you do, but you'll do
what you want, and you can't control that.  
  
The reason this is mistaken is that people do sometimes change what they want.
People who don't want to want something — drug addicts, for example — can
sometimes make themselves stop wanting it. And people who want to want
something — who want to like classical music, or broccoli — sometimes succeed.  
  
So we modify our initial statement: You can do what you want, but you can't
want to want what you want.  
  
That's still not quite true. It's possible to change what you want to want. I
can imagine someone saying "I decided to stop wanting to like classical
music." But we're getting closer to the truth. It's rare for people to change
what they want to want, and the more "want to"s we add, the rarer it gets.  
  
We can get arbitrarily close to a true statement by adding more "want to"s in
much the same way we can get arbitrarily close to 1 by adding more 9s to a
string of 9s following a decimal point. In practice three or four "want to"s
must surely be enough. It's hard even to envision what it would mean to change
what you want to want to want to want, let alone actually do it.  
  
So one way to express the correct answer is to use a regular expression. You
can do what you want, but there's some statement of the form "you can't (want
to)* want what you want" that's true. Ultimately you get back to a want that
you don't control.   
  
  
  
  
  
  
  
  
  
  
  
**
|  
  
There is a kind of mania for object-oriented programming at the moment, but
some of the smartest programmers I know are some of the least excited about
it.  
  
My own feeling is that object-oriented programming is a useful technique in
some cases, but it isn't something that has to pervade every program you
write. You should be able to define new types, but you shouldn't have to
express every program as the definition of new types.  
  
I think there are five reasons people like object-oriented programming, and
three and a half of them are bad:  
  

  1. Object-oriented programming is exciting if you have a statically-typed language without lexical closures or macros. To some degree, it offers a way around these limitations. (See Greenspun's Tenth Rule.)  
  

  2. Object-oriented programming is popular in big companies, because it suits the way they write software. At big companies, software tends to be written by large (and frequently changing) teams of mediocre programmers. Object-oriented programming imposes a discipline on these programmers that prevents any one of them from doing too much damage. The price is that the resulting code is bloated with protocols and full of duplication. This is not too high a price for big companies, because their software is probably going to be bloated and full of duplication anyway.  
  

  3. Object-oriented programming generates a lot of what looks like work. Back in the days of fanfold, there was a type of programmer who would only put five or ten lines of code on a page, preceded by twenty lines of elaborately formatted comments. Object-oriented programming is like crack for these people: it lets you incorporate all this scaffolding right into your source code. Something that a Lisp hacker might handle by pushing a symbol onto a list becomes a whole file of classes and methods. So it is a good tool if you want to convince yourself, or someone else, that you are doing a lot of work.  
  

  4. If a language is itself an object-oriented program, it can be extended by users. Well, maybe. Or maybe you can do even better by offering the sub-concepts of object-oriented programming a la carte. Overloading, for example, is not intrinsically tied to classes. We'll see.  
  

  5. Object-oriented abstractions map neatly onto the domains of certain specific kinds of programs, like simulations and CAD systems. 

I personally have never needed object-oriented abstractions. Common Lisp has
an enormously powerful object system and I've never used it once. I've done a
lot of things (e.g. making hash tables full of closures) that would have
required object-oriented techniques to do in wimpier languages, but I have
never had to use CLOS.  
  
Maybe I'm just stupid, or have worked on some limited subset of applications.
There is a danger in designing a language based on one's own experience of
programming. But it seems more dangerous to put stuff in that you've never
needed because it's thought to be a good idea.  
  
  
---  
  
  
---  
Rees Re: OO  
  
Spanish Translation  
  
  
  
  

* * *  
  
---