Books and Resources
This post should be a constantly updated one enumerating all the books I've read and enjoyed or learned from. I will most likely provide links to such books. I do NOT encourage people to not buy these books and just read them online. In fact, I bought most, if not all of them.
Books
Modern Operating Systems 4th Edition --- Andrew Tanenbaum
A must read book for low-level enthusiasts. It explains operating systems from zero with connecting it to history as well so that you see the exact evolution. The book itself is quite modern and still applies today conceptually.
Compilers: Principles, Techniques, and Tools
To be fully read An amazing book to get introduced to what LLVM accomplishes.
Design Patterns --- Element of Reusable Object-Oriented Software
Another must read for any OOP user. Describes high-level strategies and patterns that makes you better and planning and implementing complex OOP applications.
Great for minimalist Vim users. I prefer to keep plugins at a minimum and some of these tricks help me drop a plugin or two from my workflow. It is definitely a more beginner friendly book.
Computer Architecture — A Quantitative Approach
To be fully read The Bible for computer architecture. Not much else to say here. You want to understand how CPUs work, this is the book you HAVE to read. It does a great job at giving you a full overview of architectures without going too in-depth for some specific topics. There are other books for that, like Modern Processor Design. It is a long and exhausting read, but overall definitely worth it.
Modern Processor Design: Fundamentals of Superscalar Processors
To be fully read A great follow-up after Hennessy and Patterson's book. Did not read much of it, but so far I like it. It is more focused on superscalar, speculative, and out-of-order CPUs. AMD microarchitecture is mentioned with great detail.
Memory Systems: Cache, DRAM, Disk
To be fully read Recommended Bible for memory subsystem engineers. Latency, bandwidth, prefetching, DRAM timing are detailed. It is a good read for anyone, our job does not stop at understanding CPU design. Seemingly shows some of the physics and chemistry behind it all.
Parallel Computer Architecture
To be fully read If you ever wondered how to scale performance beyond a single core, this book is for you. Lot of pseudocode, and does not seem like an easy read. The authors recommend it to graduate students and engineers working in system architecture design.
Websites
A great quick reference for design patterns.
An amazing guide from 0xAX (as always) on Linux internals. Well structured and goes quite in-depth into the internals. I would recommend it for any OS developer in general. 0xAX's blog on NASM is also spot on and discusses many of the "secrets" in NASM. So unless you want to read the NASM manual again and again (which eventually you WILL do), their guide is a good place to "steal" tricks from.
Atlassian's Advanced Git tutorials
Learning the basics of Git is quite straightforward and the internet offers MANY guides on it. However once you reach a certain level, your knowledge will stagnate. Most of my Git knowledge comes from actually collaborating on real projects, and as such I am missing subtle but important details of Git. Things like amending or rebasing come up often, but have you heard of Gitk or Git hooks? Or Git gc? If not, Atlassian's Advanced Git guide might help you get to know Git more.
Movies
A movie about the Erlang language. Even if you don't plan to use the language itself, the Actor-Model paradigm can be implemented/used in any language. Some people hail it as the replacement of OOP.