The Zencyclopedia


I summarized the objective of this project fairly well in its introduction:

In my time on the Internet, I've come across several instructional websites that are extremely straightforward in their presentation of material, and often maintain a sense of humor and self-awareness throughout. These tutorials, while usually isolated works, have proven invaluable to me.

Additionally, I've observed that for most topics there are few, if any, guides that facilitate first-principles approaches to learning.

Finally, there is not, as far as I know, a comprehensive guide to learning just about anything using freely available resources.

To that end, I present the Zencyclopedia, a categorized list of resources to assist in the learning of any subject from first principles. The name is a portmanteau of the Japanese word 全 (pronounced "zen"), meaning "all" or "everything," and the English word "encyclopedia."

I also wrote a post about why I started the project.

If you find the Zencyclopedia even slightly useful, please consider contributing more resources to the Github repository. I don't (yet) know everything, so I can't evaluate the quality of most resources without help.

Technical notes

The main file in the repository is just a simple markdown document. So where does the formatted website come from?

Update (6/30/2018) The Zencyclopedia is now built statically using Anodize. The below information is no longer applicable.


Every time I push the markdown to the server, the post-receive githook executes a certain node.js script. This script uses some evil runes regular expressions:

/([\w ]*)(?: <([\w-]*?)>)?\n={80}\n([\W\w]*?)(?=\n[^\n]*\n={80}\n|$)/g
/  ([\w ]*)(?: <([\W\w]+?)>)?\n  -{78}\n([\W\w]*?)(?=(?:  [\w ]*(?: <[\W\w]+?>)?\n  -{78}\n)|$)/g
/\*\*\[([\w\W]*?)\]\(([\w\W]*?)\)\*\*  \n([\w\W]*?)(?=(---)|(?:\*\*)|$)/g

to parse the markdown into an abstract syntax tree, which is then processed into HTML for the website.

Index