An accessible guide to our digital infrastructure, explaining the basics of operating systems, networks, security, and other topics for the general reader. Most of us feel at home in front of a computer; we own smartphones, tablets, and laptops; we look things up online and check social media to see what our friends are doing. But we may be a bit fuzzy about how any of this really works. In Bits to Bitcoin, Mark Stuart Day offers an accessible guide to our digital infrastructure, explaining the basics of operating systems, networks, security, and related topics for the general reader. He takes the reader from a single process to multiple processes that interact with each other; he explores processes that fail and processes that overcome failures; and he examines processes that attack each other or defend themselves against attacks. Day tells us that steps are digital but ramps are analog; that computation is about “doing something with stuff” and that both the “stuff” and the “doing” can be digital. He explains timesharing, deadlock, and thrashing; virtual memory and virtual machines; packets and networks; resources and servers; secret keys and public keys; Moore's law and Thompson's hack. He describes how building in redundancy guards against failure and how endpoints communicate across the Internet. He explains why programs crash or have other bugs, why they are attacked by viruses, and why those problems are hard to fix. Finally, after examining secrets, trust, and cheating, he explains the mechanisms that allow the Bitcoin system to record money transfers accurately while fending off attacks.
When I saw the title of this book, I got all excited - at last we were going to get an explanation of bitcoin for the rest of us, who struggle to understand what the heck it really involves. There certainly is an explanation of bitcoin, but it comes in chapter 26 - in practice, the book contains far more. Almost every popular computer science title I've read has effectively been history of computer science - this is one of the first examples I've ever come across that is actually trying to make the 'science' part of computer science accessible to the general reader.
I don't mean by this that it's an equivalent of Programming for Dummies. Instead, Bits to Bitcoin takes the reader through the concepts lying behind programming. If we think of programming as engineering, this is the physics that the engineering depends on. This is a really interesting proposition. Many years ago, I was a professional programmer, but I never studied computer science, so I was only familiar with the practical part, rather than the theory. And there's no doubt that I learned quite a lot, but it was distinctly hard work to do so.
There are two problems here. One is that Mark Stuart Day is determined not to use code in examples, as he believes that it will scare off ordinary readers. So instead he uses analogies, some of which are so stretched that it's really difficult to follow what's going on - it would have been far simpler to have used actual examples from computing. I'm really not sure that the 'no code' approach works, because frankly, if you're prepared to put in the considerable effort required to work your way through this book, you wouldn't be scared of a little simple code.
The second issue is that this really is a textbook with some of the sharp edges rubbed off. There's no context, no narrative, no people - nothing but fact after fact. Again, this makes reading the book much more like hard work than it needs to be. As I've already mentioned, that's not to say that you won't learn quite a lot if you make the effort - but things don't have to be like this. And the constant abstraction from actual code or hardware detail makes it more of a struggle to get through. This comes across particularly when Day gets on to the internet, where there pretty much has to be more specifics, and suddenly things get a touch more readable.
As far as bitcoin goes, I'm still waiting for an explanation of it that is comprehensible to the general reader. Again, Day does give us plenty of information, but it's not put across in a usefully comprehensible way. I was pleased to see, though, that he does address the issue that has recently been in the news that bitcoin mining is currently resulting in a lot of dirty energy being used.
Overall, then, the intention of this book is brilliant - it's supposed to be proper popular computer science. It's just the execution of that intent that makes reading it a lot harder work than it should be.
If you are an intellectually curious person, I highly recommend “Bits to Bitcoin” for you. This book will have something for everyone regardless of your technical background. The real world examples and interesting analogies used by the author explain the concepts very clearly and will make it easy for the novice reader to understand. Technical experts will also learn something new, as there is a wide range of topics covered in this book. The chapter on digital currency and block-chain is the best explanation of this topic I have ever read.
Imagine this former kindergarten teacher's delight when I read the author's explanation of recursion with a nursery rhyme for an analogy! I appreciate that Bits to Bitcoin requires no prior computer training from the readers, but expects that the readers are intellectually fearless in learning. I think a well-rounded education involves a basic knowledge of computer, no matter our age or profession.
The author uses careful analogies, and at times, even gets philosophical about computer science. I like the historical notes about computer developments. Yes, it does take thoughts and work, but I enjoyed being taught from the basics of bits, to process, to systems, to how computers work or fail, to browsing, to the cloud, to security, and then to the craze of bitcoin.
I highly recommend Bits to Bitcoin to those wanting to understand the underpinnings of our technological life and, more importantly, to be "woke" to our technical friends and relatives!
Professionally, my job is to essentially deal with failures. Design so it does not happen often, code so we can correct it most of the times it still does and create processes so it can be detected and - hopefully - fed into next design to avoid in future. I have mostly succeeded with failures in the past 25 years. But till I read the absolutely delightful chapter titled “Failure”, I could not crisply articulate the difference between “availability” and “reliability” to my 8 year old had she asked me. As Mr. Stuart Day describes, paraphrased, “availability” is having a good friend in college. Always there, has answers to everything but perhaps not always accurate. “Reliability” is the quality of answers when that friend becomes a top-notch neurosurgeon and asked about brain aneurysms. Alas, perhaps he is not as readily available by then. Good software commingles both. Beautiful read.
A pretty good book covering a wide range of computer science topics, from bits to operating systems to virtualisation, to the internet, cryptography and of course bitcoin at the end. I liked that the author tried to simplify and explain topics to a wider audience, though sometimes that approach would backfire as I felt like he overexplained too much. I would consider this book to be an introduction to computer science of sorts, just to get a taste of the range of topics available, before one decides to dive deeper into a topic of choice. I found this book so helpful that I even took notes of my own.