What I read in 2018
Last year, I wrote a summary of the books I read in 2017. A lot of people commented on that post, and it was nice to take a look back on the year, so I decided to make a habit out of writing these summaries. Just like last year, I ended up reading eight books this year. Five out of those were recommended to me by other people. I also started reading papers more systematically and wrote summaries on a good number of them.
The Three-Body Problem
Remembrance of Earth’s Past is a well-known Chinese science fiction trilogy that Yu recommended to me. The Three-Body Problem is the first book of the series. I had heard about the book before and ended up reading the entire trilogy this year.
The first book begins with many famous scientists committing suicide, stating their reason is that science stopped making sense. A second story line plays in the past, at a secret army base for scientific experiments. Over time, the story lines become more and more connected. A lot of people in the story are motivated by historical events they witnessed, and it was interesting to gain some insight into China’s history.
The first book mostly sets the stage for the two sequels, but is still very interesting to read on its own. In general, it seems difficult to summarize the books without giving major plot points away. For example, the Amazon book summary spoils parts of the book in my opinion, and I would recommend against reading that summary prior to the book.
The Dark Forest
The Dark Forest is the sequel to the Three-Body Problem. The book covers a long time period, which makes it really interesting to see how things change over time. For this reason, it is probably my favorite book of the trilogy.
The book contains some interesting psychological or philosophical thought experiments. The general theory that the book is named after is incredibly thought-provoking. I still think about it from time to time. Unfortunately, due to the nature of the second book, few characters from the first book reappear.
Death’s End
Death’s End is the last part of the series. Conceptually, it is similar to the second book. A lot of time passes and the book is mostly concerned with the bigger picture of how humanity changes.
Every few chapters, a short excerpt from a history book that comments on the current events is given. That was an unusual format and made the book more interesting to read. Still, the very end is a bit weak. Ending the book 50 or so pages earlier probably would have made the book better.
All in all, I really liked the books. Even though I did not read much science fiction in the last years, I deeply enjoy this series. I also recommended the books to a few people.
Cracking the Coding Interview
I read through most of this book in 2016 and also worked through most of the exercises back then. This year, I decided to re-read everything on the weekend before my Google onsite, just for refreshing some concepts. That turned out to be a good time investment.
However, I noticed that I was much less satisfied with the book than two years ago. Some of the analyses are way too simplified. Still, it seems like a good book for getting an overview. The exercises also give you some idea on what to expect in algorithm interviews. If you have more than one weekend, taking a very thorough algorithm class for the theory while solving problems on leetcode should be much more effective.
The Master Algorithm
The Master Algorithm is a pop-scientific book about machine learning. It gives a nice overview of fundamental concepts and talks about the history of the field. The book is written for a general audience and does not assume prior knowledge. The author uses a lot of analogies, some of which were great, while some were not that good. However, it is evident that he put in a lot of effort into trying to explain machine learning to people that are not from the field.
The fundamental idea behind the book is that there are five different schools of thought in machine learning. These are the evolutionist, Bayesian, analogist, symbolist, and the currently dominating connectionist approach. The author argues that if we want to create a master algorithm that matches the learning power of our brain, ideas from all these tribes ought to be combined.
The first part of the book introduces the five tribes and their main ideas. This was the strongest part of the book and I will probably go through this again at some point The second part attempts to describe how they could be combined. This feels a bit forced. It is also fairly abstract since it is not entirely clear how this should work.
Kane and Abel
Prathiksha recommended this book to me in Mountain View. I ended up reading it a few months later when I was back in Europe and enjoyed it a lot. Kane and Abel is the story of two men that were born on the same day in 1906, in completely different parts of the world. Both are similar in that they are nearly entirely driven by ambition. The book describes their lives and ways to power.
I really liked the author’s eloquent writing style. Some paragraphs of the book sound really poetic. However, there are not many surprises in the story. Most of the plot points are fairly predictable or are resolved in the very same chapter that they were introduced in.
That is totally fine though. It is still a very entertaining read since most of the satisfaction from reading this book comes from seeing the two main characters progress, rather than from the suspense of not knowing what is going to happen. I decided to also read the two sequels to this book, The Prodigal Daughter and Shall We Tell the President afterwards.
A Tour of C++
Bjarne Stroustrup, who created C++, wrote a 1400-page book that gives a very thorough introduction to C++. A Tour of C++ is not that book. Rather, it is a compact C++ tutorial, distilled from the content of the longer book. It is meant to introduce C++ to people that are already very familiar with programming in general.
The first few chapters introduce C++ as a language, while the rest showcases the standard library. The book is an easy read, and one really notices that it is written by someone that knows all about C++. It also covers the latest C++ features, with the newest edition of the book released in mid-2018. I ended up preparing reading notes for all chapters.
The Prodigal Daughter
The Prodigal Daughter is the sequel to Kane and Abel. It tells the stories of Kane’s and Abel’s children, with a focus on Abel’s daughter. Roughly the first half goes through the events that already took place in the first book, albeit from a different viewpoint. I enjoyed this part, but I can see how some people might find this to be too repetitive.
The second half is concerned with the political ambitions of Abel’s daughter. The book is written in a very similar story telling style as the first book. People that liked Kane and Abel should enjoy this book, since it is mostly more of the same. I found it to be an easy and very enjoyable read.
Papers
I noticed that I ended up reading a lot more papers this year than I did in the previous years. This mostly started in March when I began looking into the literature for my master’s thesis. I noticed that I read more papers in the first three weeks than I did in the entirety of working on my undergrad thesis.
When I handed-in my thesis in August, I tried to keep the momentum going and took a more structured approach to reading papers. From late August on, I averaged one to two papers per week. For most of them, I ended up publishing reading notes on GitHub. Writing notes as I was working through papers turned out to be a great learning mechanism. I still slightly regret not doing this in an organized manner earlier.
Reading papers also turned out to be beneficial to my work at Google. Since Google publishes papers about a lot of internal systems, reading those papers allowed me to understand the concepts more deeply than I would have by just interacting with the systems through some interface. Besides classic papers on MapReduce or Dremel, there were also other interesting papers, for example on Google’s monorepo or on the cluster computing system Borg.
My favorite papers I read this year were the MapReduce paper and Ken Thompson’s Turing Award paper. It is worth noting that my focus was mostly on reading well-known papers where it was clear that I would gain valuable knowledge. Next year, I might start reading really new papers more heavily.
Compared to last year, the set of books I read this year was less diverse. I ended up reading three science fiction books, two general fiction novels, and three technical books. For next year, I plan on reading more non-fiction books again. I especially enjoyed reading books that were recommended to me, so I plan on continuing this in 2019.