mht.wtf

Computer science, programming, and whatnot.

Four Books and Two Cheat Sheets

September 22, 2024 back to posts

I took a two week vacation where I found a lot of time to read, and during those two weeks I read four books:

I really enjoyed all four books. Here are some quick notes:

Designing Data-Intensive Applications

This is a database book, and I had, somehow, not realized that that's what it is. It covers mainly databases and distributed systems, and very little at the "application" level. Under "Scope of This Book", it says:

“We look primarily at the architecture of data systems and the ways they are integrated into data-intensive applications”

which I think is accurate. The book gives a great overview on all things "data system architecture", with multiple services in multiple datacenters, but it contains little when it comes to single applications.

Rust Atomics and Locks

I was already pretty familiar with Rust atomics, considering my Master's thesis back in 2018 was building a concurrent GC for Rust. However, the book cleared up some confusion regarding memory ordering, and was a nice tour of APIs that are either new since 2018 or that I didn't use back then either.
It also highlights differences in output for x86_64 and ARM, which was especially neat.

A Philosophy of Software Design

This is maybe the only book of its kind that I had heard was good, and I agree. "Strategic programming", and the principle "modules should be deep" puts words on a feeling I've had, but that I haven't been able to succinctly express. It even has a performance chapter, and it is actually good! The first sentence of its conclusion is

The most important overall lesson from this chapter is that clean design and high performance are compatible.

So good.

The book isn't OOP-centric, but it often looks through an OOP lens; I wish the text would consistently say "module" instead of "class" to better disambiguate itself from the standard OOPy soupy advice.

The Staff Engineer's Path

What happens after "senior engineer"? This book paints a big picture to answer that question. Parts of the book is only really applicable to large organisations, but there's plenty of content for an org of any size. I especially liked the chapter "You’re a Role Model Now (Sorry)".

Cheat sheets

Both A Philosophy of Software Design and The Staff Engineer's Path had lists of summaries, either at the end of each chapter or at the end of the book. In order to better remember the takeaways from the books I made cheat sheets containing the summaries. This was also a good reason for checking out typst, which I also really liked. Here they are:

Both Typst files use the tiny common.typ.

eBooks.com

I bought three out of four books from ebooks.com. It has become my new go-to place for buying ebooks, because you get DRM-free pdfs and epubs that you can just download. No weird apps or calibre DRM-stripping required. It's great! The selection is so-so, but notably O'Reilly seem to have their entire catalog there.

Thanks for reading.

This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License