I spent a good portion of the end of 2019 and the beginning of 2020 reading Paul Graham’s essays. Many caught my attention (and my fingers to take notes). I want to comment on an essay about advice for good writing. Because it was written in a way that allowed for easy reformatting (ideas separated by ;, I thought it would be cool to convert the prose into a checklist).

I write fiction and non-fiction.
I write open-source software.
I create generative art.

All of these are available for free in different media. If you like what I do, and want me to keep creating, you can contribute using the links below.

Patreon Become a Patron!

Creating the checklist

The main text comes from here. For simplicity, I have only used the main paragraph (aka, copy and paste the second paragraph). I omitted it here because it would be long and you can read it in the native format from the source.

In the code chunk below I comment the steps I took.

# text is copy-paste of the second paragraph
# text <- c("...") ... == copy-paste

# split using "; "
sp <- stringr::str_split(text, "; ")

# To create a checklist
sp <- paste0("- [ ]  ", unlist(sp))
# append markdown title
sp <- c("# Paul Graham's Writing Checklist", sp)

# Capitalize first letter of every sentence
sp <- stringr::str_to_sentence(sp)

If you want to write it to file, you can use writeLines()

# write
fileConn <- file("paul_graham_writing_checklist.md")
writeLines(sp, fileConn)

# If you want to knit to html you can do this
# knitr::knit2html("paul_graham_writing_checklist.md")

Let’s take a look at the product:

# printing for web post
cat(sp, sep = "\n")
# Paul graham's writing checklist
- [ ]  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.

The checklist is not in strict chronological order, so I might try to reshape it later into something that would make more sense as a timeline. It will render as a checklist in something that is GitHub flavored (e.g., on GitHub). However, I will probably just use it as text file or print it as is.

I also noticed that the link for the Spanish translation is broken/outdated, so I tried my best to translate it. Here it is


I think this checklist is an awesome learning opportunity and a clear path to improving one’s writing. Quite happy to have found it, looking forward to improving my skills.

I got to learn a few cool R things like, 1) I can use writeLines() to write a .md file and 2) stringr::str_to_sentence() is an awesome function.