Books of 2025

Books of 2025

End of 2025 is closing in fast so I took some time to finish the last book for the year. I’ve also re-visited the other two books I’ve read and managed to write down some thoughts in this blog post.


After a strong ending of 2024 I managed to continue my book reading trend into 2025, or at least for the first several weeks. Then I switched focus, but returned to finish another book by the end of the year.

A Common-Sense Guide to Data Structures and Algorithms, Second Edition

A Common-Sense Guide to Data Structures and Algorithms, Second Edition: Level Up Your Code Programming Skills by Jay Wengrow (2020)

It was a while since I was taught data structures and algorithms, and that was mostly in my native language. Some things did not translate well in my brain, so I had to re-learn them over the years. It was nice to re-visit all of that again.

I really enjoyed this book. It is organzied in a way that the content builds up as you go through. It starts by motivating the importance of data structures and algorithms, and introduces the reader to simple definitions and concepts that are going to be used in later chapters. The examples are very visual and easy to follow.

For me, the one chapter to point out in this book would be Chapter 12: Dynamic Programming.

Since it is universally agreed that Dynamic Programming is a really bad name for what are essentially some optimization techniques, I didn’t really get what this is all about before reading this book. I was familiar with memoization, but never connected the two.

Dynamic programming is the process of optimizing recursive problems that have overlapping subproblems.

When breaking down the algorithm’s problem space in to smaller pieces - subproblems, and if those overlap, then there is an opportunity to use Dynamic Programming. This can be achieved, as mentioned, with memoization, or the bottom-up approach.

All the examples in the book are written in one of the three languages: JavaScript, Python or Ruby. But I chose to write all the examples and exercises in Python and created a GitHub repository. I think this was my first exposure to Python, and I really really liked it!

By the time I was finishing the book I found out that the author released the Python-only and JavaScript-only versions. In the end I would recommend getting this book in Python-only version, and I look forward to getting the Volume 2!

Designing Distributed Systems

Designing Distributed Systems: Patterns and Paradigms for Scalable, Reliable Services by Brendan Burns (2018)

This is a free book accessible from Microsoft using the link above. That is the version I’ve read, but I’ve also got the second edition in paper form.

Since I was, and still am, using Kubernetes at work as a way to run applications, I thought it would be beneficial to learn some of the architectual patterns when running distributed systems.

The book it self is packed with information in a very condensed format, so it is a quick read and I would definitely recommend it to anyone working with distributed systems or kubernetes. It also offers some examples and exercises for the reader.

At the time I was reading this, I was also building a cost-optimized log for IoT devices. This book allowed me to put a name on what I was doing, so I will point out Chapter 8: Scatter/Gather.

…scatter/gather requests are simultaneously farmed out to all of the replicas in the system. Each replica does a small amount of processing and then returns a fraction of the result to the root. The root server then combines the various partial results together…

In my case, IoT devices produced a lot of data, but that data was rarely accessed. Knowing that and given the amount of data, having instantaneous access was not cost effective. I chose to partition the data in time dimension during writes to a cheap blob storage. Trade-off for this cost optimization was that now it took some time to go through all the files to extract the logs for the specific device. With a good partitioning strategy this can be minimized since it opens up opportunity to throw even more replicas at the problem, and for the cost savings it is well worth it.

I think this is an amazing book to have within arm’s reach in case I need a quick reminder of some distributed system patterns and how to use them correctly.

Network Programming with Go

Network Programming with Go: Code Secure and Reliable Network Services from Scratch by Adam Woodbeck (2021)

Networking is something I like to understand and combining it with my journey to learn Go language sounded like a perfect fit.

The book covers a lot of interesting and networking related topics. It gives a good history lesson and introduction to the networking stack, and continues to go up the stack to close with Cloud hosting options.

The author also made the content accessible to users of all operating systems and all three major cloud providers.

I really liked Chapter 10: Caddy: A Contemporary Web Server. That was not just because it covered a great product - Caddy, but because that it is a larger Go codebase that the author actually showed some examples on.

Caddy is a contemporary web server that focuses on security, performance, and ease of use.

The chapter starts with Caddy introduction and explaining how to run it and modify its configuration. Then the author shows how to extend Caddy with Modules and Adapters. I think this is a neat way to teach how the tool works, but also open the opportunity to write some code for it.

In the end I was expecting a bit more low level network programming, but I’m glad I’ve also learned about things like Caddy, Wide Event Logging and how to work with other Clouds. The author also mentioned Practical Packet Analysis, 3rd Edition: Using Wireshark to Solve Real-World Network Problems and opened that alley for me :)

Conclusion

A lot has happend during the past 12 months. My work and role have shifted a bit, so I will have to figure out what will bring most value in 2026. Sometimes it is difficult to find motivation and commit to even starting a new book, but I still enjoy exploring new domains and connecting dots.

Established presence of a new tool that has all the answers introduced also a new learning paradigm. What I will try to focus more on in the future are the whats and whys, rather then how to do something. We’ll see where this all goes, but I’m happy with my 2025 book selection :)