A few books I would like to read
A shortlist of books I would like to read at some point in the near future
I like reading, a lot, but, sadly, I don’t read as much as I used to do a few years ago (for many different reasons). However, I keep growing the list of books I’d like to read, hoping I will be able to read them at some point in the future.
You’ll find a few different topics: databases, distributed systems, computer architecture, concurrency, or formal methods are some of them. Maybe you find something interesting to read.
As I’ve already said, I haven’t read any of them (well, some random chapters) so I don’t really know if they’re going to be a good read.
Here we go (in no particular order).
Transactional Information Systems: Theory, Algorithms, and the Practice of Concurrency Control and Recovery
I love everything related to databases and someday I would like to work for a living in a database company :D (building one).
The book tries to present the foundations of transactional systems as well as the practical aspects of the field what will help you meet today’s challenges
It has been setting in my queue for a while, but I have never gone really deep into it. A conversation on Twitter a few weeks ago brought it back, and maybe it’s time to deep dive into it.
Concurrency: the works of Leslie Lamport
The book presents a retrospective on Lamport’s original ideas from experts in the field: Bakery algorithm, atomic shared registers, and sequential consistency; causality and logical time; Byzantine Agreement; state machine replication and Paxos; temporal logic of actions (TLA), …
I think this is going to a nice read, from a historical perspective, about the work of one of the most influential researchers in the concurrency and distributed systems worlds.
Computer architecture: A Quantitative Approach. 6th edition
In this case, I have already read a few chapters in a previous edition of the book, but I would like to read the whole of it.
The authors, Hennessy and Patterson, are the winners of the 2017 ACM A.M. Turing Award and this 6th edition is fully revised with the latest developments in processor and system architecture.
Principles of distributed database systems
Another classic, which brings me back quite a few memories from my Ph.D. days (this is a story for a different post). Similar to the previous one, I have read a few chapters from a previous edition but I would like to read this latest edition completely.
The book covers the fundamental principles of distributed data management and some other topics like parallel database systems, peer-to-peer data, data stream systems, or cloud computing among many others.
Principles of Model Checking
I have some little experience with formal methods and model checking, mainly from my research days; I have used Alloy and TLA+ for different purposes and I am really convinced that formal methods can play a huge role in the software development world.
However, I would like to be able to properly express myself when I talk to a potential audience about the benefits of using formal methods. All the time I have needed to do it I have done a really poor job, and I would like to do something about it.
The book offers an introduction to the foundations of model checking and an extensive set of examples (both practical and theoretical).
Patterns in Network architecture. A return to fundamentals
I’ve always wanted to improve my knowledge about networking in general; not about any technology/protocol in particular but the fundamentals behind the decisions taken to build network technologies.
A few people have recommended it and I would like to give it a try at some point.
Programming language pragmatics. 4th edition
Compilers and managed runtimes are other topics that really fascinate me.
I cannot remember who has recommended this book but seems to provide an extensive and detailed guide about the concepts and fundamentals behind the programming language design with an emphasis on the fundamental tradeoffs that continue to drive software development.
The realm of Racket
I am planning to teach my oldest some programming (we’ve already done some Lego WeDo and some scratch) and my plans are to use Racket as the main vehicle for teaching him the fundamentals. I plan to follow the ideas expressed in this book.
I will write about it someday.
Signals and Boundaries. Building Blocks for Complex Adaptive Systems
I think the software world needs to learn a lot from the complex adaptive systems out there: governments, ecosystems, or markets among many others. I am genuinely interested to learn more about the basic building blocks out there and learn about other complex systems behave and how we can learn from them.
To be honest, I don’t know if I will be able to read all of them, but I would like to try to at least :D.