Yan Han's blog

On Computer Technology

Some books I read

Books I found helpful over the years.

Practical Packet Analysis, 3rd edition

I read both the 2nd and 3rd editions of this book. While the 2nd edition is good, the 3rd edition is expanded and even better so I recommend reading the 3rd edition instead.

In summary, this book covers usage of Wireshark (and the tshark / tcpdump command line equivalents) to capture and analyze network traffic, down to the packet level. All the commonly used protocols are covered, with sample packet captures for scenarios covered in the book that you can open using Wireshark to analyze.

To any Sysadmin / DevOps / SRE, Wireshark is invaluable in debugging network issues, especially to determine if a certain machine is receiving traffic - this is from personal experience. It is a difference maker if you know how to use tshark / tcpdump to determine if an issue is network related or otherwise. While you may not need to use it often, you will appreciate knowing it when you do need to use it.

To those from a software development background, you will gain a new perspective from reading this as this book probably covers quite some content that you do not have to deal with frequently.

Competitive Programming 3

  • Authors: Steven Halim, Felix Halim
  • Website: https://cpbook.net/
  • Genre: Algorithms, Competitive Programming

NOTE: This review was originally written for the 2nd edition of the book, but applies for the 3rd edition as well.

This is one of the few technical books that I have read cover to cover, and certainly one of the most valuable books I own. It contains working C++ code of many computer algorithms commonly seen in programming contest problems, and covers some rather unconventional algorithms, data structures and problem solving methods that you probably will not encounter unless you have dabbled in competitive programming. And you must dabble quite seriously in it to attain the knowledge contained in this book, as both of the authors did.

This book is a very solid introduction to competitive programming, and will really stretch your mind especially if your daily programming work is not too algorithmic. To give a rough idea of what I mean by stretching your mind, here is a list of 10 of the algorithms / data structures covered, among the many:

  • Binary Indexed Tree
  • Convex Hull
  • Disjoint Set data structure
  • Dynamic Programming - various techniques
  • Fast Matrix Exponentiation
  • Maximum Flow
  • Minimum Spanning Tree
  • Sieve of Eratosthenes
  • Suffix Array
  • Tarjan’s Strongly Connected Components Algorithm

The above is just a short list of what you will be learning. Of course, you will have to do some of the recommended UVa Online Judge problems to get the most out of this book. Felix Halim, one of the authors of this book, has a site here (https://uhunt.onlinejudge.org/) which will help you greatly should you choose to take up this quest.

Oh, and did I mention, I got this book for 20SGD (20 Singapore Dollars). Knowing how good it is, I will gladly purchase it even if it costs 70USD, which is the standard price of a Computer Science book.

As an update, the authors have kindly made the first edition of the book freely available at https://www.comp.nus.edu.sg/~stevenha/myteaching/competitive_programming/cp1.pdf. If you like it, go purchase the 3rd edition and support the authors’ work!!!

Disclaimer: Opinions expressed on this blog are solely my own and do not express the views or opinions of my employer(s), past or present.