Computers from first principles


I’ve been writing code regularly for quite a while, but have only limited myself to high levels of abstraction and didn’t go deep on understanding what was happening beneath my code.

Learning from first principles is a bold statement in computer science. You can naively start from C and dig all the way down to the NAND gate (and after that point, it’s merely physics), but the idea is to understand how complex systems are so elegantly stacked on top of each other, and how each layer simplifies the one underneath. If you are a backend engineer, you probably have a good understanding of HTTP and know how to design REST APIs, but how much do you know about TCP/IP?

Try boiling down systems to their most fundamental form and reason up from there to come up with fresh ideas.

Here are some resources I’ve been pointed to:

Take a historical note of the textile and steel industries: Do you want to build machines and tools, or do you want to operate those machines?