Today I want to discuss a book I have been reading for a while now titled “The Pattern on the Stone” by W. Daniel Hillis. I was originally reading this book because it was assigned and I’m sure we can all agree most assigned reading is very boring, dry, and in the end we feel like it was a waste of time. But, being the good student that I am I read the book and within the first few chapters something hit me. What we were reading about was actually a more in-depth look at what we were discussing in class. For example, in class within the first week we looked at the basic programming software of scratch. Now I have some background in this programming so it wasn’t hard to move to a few places or make it spin just easy beginner level programming tasks. But latter in the semester we had to read the chapter titled “programming” and in this chapter it defined programming in the very basic sense of how we did it in class. However, it then moved into using this basic programming idea to define a function and then you only have to use that function to make the program run which to me was a very interesting way to check on and keep the code simple. Then before I knew it we were using this concept in our bubble sorting algorithm with defang the sorting code beforehand and then just using the variable sort to sort the numbers. Before long I saw this happening all over where we could connect the lessons taught in the book to not just programming but life in general. An example of this connection can be seen in the chapter “Universal Building Blocks”. In this chapter the author discusses the idea of a finite state machine. This is the idea that everything has a list of states it can be in which all connected. The example the book provides is if you have a combination lock the states could be defined as locked connects to first digit right, first digit right connects to second digit right and looked, second digit right connects to unlocked and locked. (see picture for visual representation)

fsm_lock.pngThus a lock consists of four states that are all connected. This idea of a state machine is everywhere and by changing how you view an object you can break it down into its states. This can be helpful for things such as fixing a problem with a machine that is stuck, trying to figure how something works, or to just help pass the time when you’re bored. The ideas presented in this book continue to baffle me as the have a great relation to the outside world instead of having a very course specific application. This book has a very interesting idea with it and I believe if you take the time to read it can be a very useful tool to any person. Some of the things that class and the book got me interested in is algorithms. So as an example as to what I mean with if you but the time in and read it I discovered I wanted to learn more about sorting algorithms because I enjoy doing card tricks and it can take some time to sort a deck of cards in the very specific way that you want each time. This idea led me to https://betterexplained.com/articles/sorting-algorithms/#Quicksort_Best_ON_lg_N_Avg_ON_lg_N_WorstON2 a site that helps to explain how to use and the pros and cons of each sorting algorithm. Because of this I discovered that the best way for me to sort them the exact way I want is a selection sort which is to take the smallest card and place it at the start and continue till it is sorted. Just small things like this amazed me while I was reading this book. This book was a great read and I would recommend it to anyone that wants to gain some understanding of how a computer works and how to apply this to the world around them.

Score: 8/10