I’m using this page to keep track of the books I’ve been using as I continue my independent studies. All of these books have been incredible resources, and I highly recommend them.

Practical Vim, by Drew Neil

I’ve been using Vim for 2 years at this point, until about 6 months ago inside VSCode, and more recently I’ve moved my entire development environment to neovim/tmux. This book taught me so much about Vim that I wasn’t even aware of, and I highly recommend it to anyone thinking about switching over to Vim, as well as daily users who want to become more familiar with Vim’s esoteric features.

Designing Data-Intensive Applications, by Martin Kleppmann

Much has already been written about this book, but I highly recommend taking detailed notes as you read through. My notes on this book have already come in handy as I’ve begun to explore operating systems, architecture, and database internals.

Beej’s Guide to Network Programming

This is a really cool resource. I didn’t want to spend a bunch of time learning about networking but wanted a primer for basic familarity. This book did a great job with that, and is also written in a very accessible and entertaining style. The only issue I had is that some of the C code is hard to read, with extremely short variable names and not much explanation.

The Pragmatic Programmer, by Andy Hunt

This is another classic text in software engineering. I found it to be a little outdated, but still valuable to refresh on non-technical aspects of software engineering which are easy to forget about.

Refactoring, by Martin Fowler

Prior to giving this a read, I had a sense for when code needed refactoring, but this book gave me the ability to understand patterns formally, and gain a concrete sense of how to proceed with a refactoring once I’ve identified it’s worth doing. Also, I thought the discussion of why messy code sometimes doesn’t need refactoring particularly valuable.