Explained from First Principles

Welcome to Explained from First Principles, a technology, science, and philosophy blog for curious people who want to understand and change the world. In order to make you feel at home here as quickly as possible, here is what you should know about this blog.



Tabloidscoverpeople Newspaperscoverevents This blogcoversideas
This blog gets to the bottom of technical concepts and scientific theories.


The following articles have been published on this blog:


The topics on this blog fall into one of the following categories:

  • Technologies: How we humans accomplish certain miracles of the modern world.


The goal of this website is to provide the best introduction available to the covered subjects. After doing a lot of research about a particular topic, I write the articles for my past self in the hope they are useful to the present you. Each article is intended to be the first one that you should read about a given topic and also the last — unless you want to become a real expert on the subject matter. I try to explain all concepts as much as possible from first principles, which means that all your “why” questions should be answered by the end of an article. I strive to make the explanations comprehensible with no prior knowledge beyond a high-school education. If this is not the case for you, please let me know.


As is the case for all humans, my expertise is limited. Given the wide range of topics I cover, I cannot be an expert in all of them. I try to check empirical facts and study normative statements as well as possible, but unlike schools and Wikipedia, the content on this blog is intentionally opinionated. If you don’t like this, then a different website is just a click away. I believe that the judgement of theories is just as important as the theories themselves, given the right amount of intellectual humility as opinions can and should evolve with new considerations. The problem with learning is that the more you understand, the more you understand what you don’t understand. While going down the rabbit hole of a topic can be a lot of fun, I have to stop my research at some point in order not to paralyze myself. Therefore, if I’m mistaken about facts, please bring it to my attention. If you disagree with my conclusions, then write a rebuttal. If your rebuttal contributes to a civilized debate, I will consider adding a link to it.


In order to truly understand why things are the way they are and not different, you have to put in a lot of effort. But as with many things in life, the more you put into it, the more you get out of it. To respect your time, I try to write as succinctly as I can, which makes the information density really high. However, complex concepts simply require a lot of words to explain them properly. If a topic or section does not interest you, you should skip it rather than waste your time. I put a lot of thought into the structure of the articles to make the sections as easy to skim, skip, and digest as possible.


Explained from First Principles by Kaspar Etter is licensed under the Creative Commons Attribution 4.0 International License.


While I researched the content on this website thoroughly, you take or omit actions based on it at your own risk. In no event shall I as the author be liable for any damages arising from information or advice on this website or on referenced websites.

In order to make this blog as useful as possible, I added the following features for you. If you have ideas for improvement, tell me.

Table of contents

The table of contents is generated to the left on bigger screens and accessible through the button in the lower right corner on smaller screens. It contains two levels of titles, which are automatically expanded on bigger screens and always expanded on smaller screens. As the current section is highlighted, you always know where you are, which is crucial to grasp complex topics.

If you click on a green link, which references a different section on the same page, a new entry in your browser history is generated so that you can easily go back to where you were before you clicked the link. A click on a blue link opens the referenced page in a new window or tab. Like this, you never have to worry that you lose your current position. Let’s just try it: Click here and then back.

Browser address

When you scroll through an article, your browser address is updated continuously in order to always link to the current section. While this can create a lot of entries in your browser history, it helps you find more easily where you left off, especially on mobile, where a page reload is forced upon you. If you want to share an article without linking to a particular section, make sure to remove everything in the address from the hash onward. Alternatively, simply scroll to the top of the page before copying the address.

If you want to share a link to a specific section, just click on the green icon after the title in order to copy the exact address to the clipboard of your device. On devices with a mouse, the green link icon is shown only when you hover your mouse over the title.

Section skipping

If a section does not interest you, you can click on the text of its title to advance to the next section of the same or a higher level.

Information boxes

Articles contain boxes with additional information, which you can open and close by clicking on their title. If you want to expand all boxes, you can click on “Expand” in the navigation bar. This is useful for including all boxes when searching for a phrase on a page.

Recommended reading

Boxes which start out open contain explanations that are important to follow the main narrative. Their content doesn’t fit the structure of the article or is self-contained enough to warrant its own box. In either case, the article may refer to such boxes.

Optional reading

Boxes which start out closed contain side notes that can be skipped without impairing the main topic. Sometimes I just like to digress. Other times, such boxes contain background information which is too technical for a general audience. In either case, you might miss out on interesting little details if you don’t open them. However, if an article already feels too long or advanced to you, I suggest that you simply skip all closed boxes when you read the article for the first time.

Dark and light mode

If you prefer dark text on a white background, you can toggle the style by clicking on the last entry of the navigation bar at the top.

History of values

Many articles contain interactive elements, which allow you to play around with some concepts. In order to revisit earlier examples later on, the values you enter are stored locally in your browser. You can go back and forth through the history of values by clicking on the corresponding buttons. The values are persisted across sessions: If you close the browser window and then open the article again, the entered values are still there. You can erase the history by clicking the button with the trash icon. If you don’t want the entered values to be persisted across sessions in the first place, then open the article in the private mode of your web browser. If you want, you can erase all stored values, including your theme preference.

Article download

Each article can be downloaded as a PDF for printing or offline reading. You find the download link at the very top of the corresponding article. The printing feature of your browser also works, of course, but I cannot ensure that the article will be formatted nicely this way. Additionally, only the open information boxes will be printed if you export the article yourself.

Graphics export

By right-clicking a graphic with your mouse (or by double-clicking it on a touch device), you can download the graphic as a pixel image (in the PNG format) or as a vector graphic (in the SVG format). You can use the graphics on this blog for anything you want as long as you give appropriate credit, indicate if you made changes, and don’t suggest that I endorse you (see the license above).

Acronym tooltips

While I generally try to avoid acronyms, sometimes they’re better known than what they stand for. Whenever you encounter an acronym on this website, you can hover with your mouse over it (or click on it on a touch device) to get a tooltip with their full name. You can try this with PDF, PNG, and SVG.


All expenses of this blog in terms of time and money have been paid by myself until now. I pledge to disclose any conflicts of interest, whenever they might impact the content on this blog. Excluded from this are consulting work and paid seminars based on content that has already been published, as long as they don’t result in modifications to this website beyond general improvements.


Do not hesitate to contact me if you have feedback, questions, or suggestions for topics to write about. Please also let me know if an explanation is hard to follow. If you found a typographical error, a factual inaccuracy or a logical fallacy, you can also create an issue.

It already means a lot to me if you read and share my articles. If you have a regular income and learned something from my articles, I would really appreciate your financial support. You can support me on GitHub, Liberapay, Patreon, and PayPal. You can also transfer money directly to my bank account using my name and the IBAN CH48 0025 7257 6106 9840 Q. If you prefer to stay “anonymous”, you can donate some bitcoin to bc1q4fsulplawjucrw9sz0swgu6thgk24fn03wttrrcesut2nsq0zwgsepveep . Every satoshi counts.


  • I announce new articles on Reddit, Twitter, and Telegram. If you don’t like these companies, then simply don’t use their services.
  • I use Plausible Analytics to measure how people interact with this website. Plausible Analytics collects no personal information, uses no cookies, and isolates all data to a single day. In order to be as transparent as possible, I gladly share my analytics with you.
  • This site is hosted with GitHub Pages, which means that Microsoft also learns when and from where this blog is being accessed.
  • Interactive elements in articles may send personal information to other companies as well. If they do, this is explicitly stated in the paragraph before the corresponding input field. Otherwise, all the values you enter are stored only locally in your browser.


My name is Kaspar Etter, and I’m a curious and skeptic person. I studied computer science at ETH and live in Zurich, Switzerland.


Here are answers to frequently asked questions (FAQ):

Do you also have a mailing list?

No. I don’t like the pricing models of the major mailing list providers, the double opt-in hassle due to the European General Data Protection Regulation (GDPR), and anti-spam regulations requiring me to disclose my physical address, so I opted for a Telegram channel instead. You can also activate notifications on this blog’s Twitter profile or subscribe to its news feed using RSS/Atom. I intend to use these channels exclusively to announce new content, which means that you don’t have to worry about noise.

Can’t you write shorter articles?

I guess I could, but I also believe that length is the wrong metric. Whether a text is worth reading should be judged by the number of insights per word and not by the number of words. Your opinion may vary, but I think I’m doing pretty well on this metric.

Why don’t you split your long articles into smaller ones?

In my opinion, scrolling is easier than clicking, especially when you just want to skim a text. Having everything on a single page is also friendlier for offline reading and for using your browser’s search functionality to find what you’re looking for. The biggest reason for splitting long articles into smaller ones is search engine optimization (SEO). It would also have the desirable side effect of allowing me to post new content more often. For now, I’m willing to sacrifice both in favor of making my content as useful as possible, but my view on this might change in the future.

How often do you intend to publish articles?

My primary goal is to do justice to the chosen topics. The topics I’m interested in are usually quite involved. I intend to publish between two and four articles a year. In order to achieve this, I will likely alternate between large and small topics in the future.

Have you considered creating videos about your content?

Yes, but I think it’s neither a good fit for me nor for my content. I see a lot of value in edutainment and there are many great channels in this area, which I watch regularly. However, written text has many advantages when you truly want to learn something: You can read at your own pace, reread paragraphs when necessary, recognize the structure of an argument, copy fragments into your notes, and search for terms of interest. In comparison to videos, text is also much easier to make interactive and to update after publishing. Last but not least, the World Wide Web (WWW) allows me to link to additional explanations and to cite the relevant sources.

Have you considered publishing your articles as books?

Not really. I think that books are an outdated format for most purposes. On the one hand, books lack the concept of hyperlinks: You cannot easily link into the text and out of it. On the other hand, books cannot have interactive elements, which often make learning so much easier. Regarding monetization, I’m not a fan of paywalls. I believe that information shall be freely accessible and shareable as long as it does more good than harm. In my opinion, the Web is the ideal publishing platform. But we’ll see what the future holds.

What software do you use to create the graphics?

I wrote my own SVG framework because I couldn’t find a solution which matched my needs. I wanted to be able to style the scalable vector graphics with the page-wide CSS so that the theme can be toggled without having to replace the graphics. The support for CSS classes wasn’t great in the vector graphics editors that I’ve checked. Using code instead of a graphical user interface (GUI) to create vector graphics has the advantage that graphics can build on one another and share common functionality. It also makes it straightforward to compile a single graphic in different ways. I wanted the graphics to be generated ahead of time so that they can be used for other purposes as well. All major SVG libraries, however, manipulate a document object model (DOM). While there are workarounds to run them on a server, such as using a headless browser or a DOM library, I decided to roll my own little SVG library, which grew over time. It is heavily tailored to my needs and my design language but if there’s enough interest, I’m open to splitting the framework into its own repository.

If you like my work, please consider supporting me with a donation so that I can keep publishing articles which are freely available. To be informed about new articles, follow this blog on Reddit, Twitter, or Telegram, or subscribe to its news feed using RSS/Atom.