Friday, April 18, 2025

This year, I've been diving into some fantastic books that have expanded my understanding of programming, systems, and computer science fundamentals. Here's a list of what I've been reading so far (the order is based on which one I had read first):
Authors: Alan A. A. Donovan and Brian W. Kernighan
A definitive guide to Go, written by one of the creators of C. This book covers the language thoroughly and is great for both newcomers, I started this which was good for me as intro though after this I've gaining knowledge via open source codebases 🙂
Author: Brian “Beej” Jorgensen Hall
This is actually amazing, was recommended by our Computer Networks Professor, writing raw sockets in C after reading this felt more meaningful also the writing is amazing.
Author: Thorsten Ball
Read it's first few chapters, which were amazing you'll really know what happens from executing the code -> lexers -> ast etc. Though I hope I complete it on someday!
Author: Ulrich Drepper (Red Hat, Inc.)
I'll say this had some repetition with the things that i'd learned in my Computer Organization and Architecture course, though I'm still thinking to give this one for go, hopefully.
Author: Christian Benvenuti
Of course, this turned out to be in too much depth. I'm went through some concepts which are still relevant (this was published in 2005). Many sections in this contain detailed kernel-level code implementation, which for now I’ve skipped :) — more so because it's evolving and I won’t come across it in my work as things stand. This also inspired me to look through Linux networking namespaces and start playing around with them. I enjoyed going through first few chapters, I'd some understanding of concepts like spanning tree protocol, ARP, routing, etc before so it was more of repitition, but still good read.
Author: Ilya Grigorik
This was an amazing read. If you happened to have interest about browser networking Internals, this is great, there were few parts which are kind of outdated now but I think its ok to learn how different protocols functioned initially. Just for more to this, I also explored many of concept mentioned happening practically via different linux commands, browser dev tools, etc. so maybe if you read this you can try it out for better understanding.