Readings: November 2021
Rationale
In this series, I will publish links to notable texts I read. I intend to publish a new set every month.
Books
- Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions (Greg Hohpe, Bobby Woolf) - this book constitutes a comprehensive catalog of patterns that can be applied in distributed systems. The book focuses on asynchronous communication with messaging. Even though it was first published in 2003, many of the presented solutions are commonly found and used in messaging scenarios of complex computer systems and are implemented in popular message brokers.
- Test Driven Development: By Example (Kent Beck) - this book is an introduction to Test Driven Development by one of its proponents, Kent Beck. It is very lightweight in style and full of practical knowledge. The technique is demonstrated with easy-to-follow examples. Also, the list of patterns that can be applied during the refactoring phase of TDD is very valuable.
Articles
- What every IT person needs to know about OpenBSD: Part 1, Part 2, Part 3 - great, three-part series describing the most important facts about the OpenBSD system, including a brief history, the user experience and some of the neat Packet Filter use cases.
- Flatpak Is Not the Future - why and how “cross-distribution” package formats for desktop Linux fail to accomplish what they were created for: provide the environment for distributing sandboxed applications. The author outlines issues of such tools from technical, security, and usability perspectives.
- Measuring Software Complexity: What Metrics to Use? - explanation of most commonly used metrics used for measuring code complexity. The author not only describes the metrics but also provide meaningful insight on which of them are most valuable in day-to-day development.
- Comparison of Operating System Complexity - massive comparison (over 100 pages!) of various operating systems (including original UNIX up to Version 10, BSDs, Minix, Haiku, Plan9 and some Linux distributions). The comparison takes into account several metrics, including the sizes of the components that each operating systems consist of. These metrics include the size of the codebase, the number of manual pages, and resource consumption. The article contains also a brief history of the analyzed operating systems that help highlight differences between environments. My key takeaways are: Linux is terribly bloated and Plan9 was a pretty cool project.