Some while ago I tried setting up my developer story at StackOverflow. The forms include a field to enter influential books. So I wondered which books I read and what my opinions on these books were. As I sometimes wish for good literature recommendations with short reviews this lead me to this article. Here is a list of books I read recently with a short review. Some include links to Amazon. I list the languages after the author. I am currently learning Chinese (我学习汉语), so I hope to add some Chinese books in another post in some years.

Rise of the Machines: A Cybernetic History

Book cover

by Thomas Rid, Available Languages: ENG, DE

Shines light on the history of computer technology. The early days are very interesting while the later days are probably known for people my generation or older. The historic importance of cybernetics is shown which is nowadays almost forgotten. Rating: 👍

Gnosis in High Tech und Science-Fiction

by Franz Wegener, Available Languages: DE

Book cover

This is again more about the history of high-tech. This book is in big parts an analysis of the American culture. Many Americans see themselves as Christians but they are in fact not. They are gnostic. Gnosis (realization) means the belief that humans are fallen gods or souls. We are prisoners of our biological bodies. As we realize it we can again rise to the divine. Gnosticism and High-Tech and therefore science wants to free us from our bodies. Gnostic ideas are found in religion, pop culture and high-tech. Wegener analyzes various case studies including the movie “matrix”. He tries a little bit too much to explain everything with gnostic. E.g. he tries explain with gnosticism why some American people have so many problems with abortions but misses some important details of the discussion. Overall the book is a collection of some history and analytics of society and pop culture. Rating: 👍

A Pattern Language: Towns, Buildings, Construction

by Christopher Alexander, Available Languages: ENG, DE

Book cover

A book on architecture, but it is more a book about a philosophy. It introduced “pattern thinking” which later was used by software engineers (gang of four) and UI designers. Only after software engineers started using patterns it got the attention it has earned. This book kickstarted my interest in architecture as a way to design (local) society and daily interactions. Rating: 👍

Genetische Algorithmen und Evolutionsstragien

by Eberhard Schöneburg & Frank Heinzemann & Sven Feddersen, Available Languages: DE

Book cover

The authors explain the differences in evolutionary algorithms, present the notations and give an overview over the methods. There are two theories: Genetic algorithms and evolutionary strategies. Researchers are divided between the two theories. Using information theory the format of encoding should not matter. This is the reasoning which also the advocates of evolutionary algorithms use. Rating: 👍

Wer bin ich — und wenn ja wie viele — Eine philosophische Reise

by R. Precht, Available Languages: DE

Book cover

This book is not really about high-tech but about philosophy. There is no way around philosophy when we talk about science and high-tech. Precht covers every major philosophical question and focusing on modern-day philosophy taking modern research into account. He does not introduce some new ideas so I recommend that you read an equivalent book in your native language. This book introduced me to many philosophical ideas like that there may be no single ego. Rating: 👍

Reality is broken

by Jane McGonical, Available Languages: ENG, DE

Book cover

McGonical argues that games can be used for good. However, the arguments are not convincing. It sounds like McGonical tries to dissolve cognitive dissonance found in the games industry. “Hey, we are investing our careers into games. I don’t have the feeling that we are doing something meaningful with our lives. Let’s look for things where games are improving the world“. The book itself contains some hints that this was the idea for writing this book. I quit the games industry after I ran into this same issue. In fact, the gaming industry is nowadays worse than casinos. This book could have convinced me otherwise but it failed. Rating: 👎

The Singularity is Near

by R. Kurzweil, Available Languages: ENG, DE

Book cover

Kurzweil is not only famous for his inventions but also books about technology and futurism. The technological singularity is the concept that accelerating technologic progress will come to a point where it grows so fast, that it leads to a singularity. Our last invention. We will upload our brains to the computer and merge with AI. Death will become only an option. Many areas of technology are covered including medicine, genetics, nanobots, and computer technology. In parts, this is not an easy read e.g. when he talks about details of neuroscience or the blood-brain barrier. In some parts it becomes repetitive when the main argument is understood, but he keeps repeating the arguments. Rating: 👍

Introduction to Cybernetics

by W. Ross Ashby, Available Languages: ENG

Book cover

It may have been groundbreaking in introducing cybernetics, but today most of the ideas are taught indirectly in a computer science degree. Reading this means understanding many interesting notations but with little new insights. Rating: 👎

Introduction to Artificial Life

by Christoph Adami, Available Languages: ENG

Book cover

Good summary of complexity theory, research on artificial life, and information theory. See evolution and biology from a different perspective using the tools of mathematics and information theory. Rating: 👍

From computer to brain

by William W. Lytton, Available Languages: ENG

Book cover

This book starts by introducing the basics of neuroscience and computer science. It has some weak chapters which are not really relevant to the main idea or where I disagree. Lytton does not really separate information from encoding. For the computation result representation does not matter. What is the difference between 0b011 and 3? They both describe the same number. My critique boils down to the quotation “A message of this chapter is that hardware molds software.” This is only true if we are optimizing performance. And this is certainly not the right book for software optimization strategies. I still have to finish it and hope to find more ideas than perceptron neuronal networks. Rating: 👎

Little people know that the audio quality of AAC > MP3 at the same bitrate. You can get AAC files from iTunes with the suffix m4a at the iTunes Store for example. Today I used the application “Spek” to visualize the spectrum of the same rock song with both encodings in comparison. You cannot really notice the difference by hearing (unless you are an audiophile with good equipment and very good ears) but if you want the superior audio quality with smaller file size just choose AAC files. For most people, the top audible frequency is, depending on age, at 18–20 kHz. In the diagrams, you can see that mp3 files cut frequencies at the top.

m4a Spektrogram mp3 Spektrogram
Left m4a, right mp3.

How to find the best place to live using the Google Maps API

The problem

Assuming you travel a lot e.g. for your jobs and you want to reduce the time you travel. I wondered in which city you should rent a flat to stay between your trips. In my specific case the only important factor was the travel time. Regarding this, what is the best city? Luckily we can solve this problem with a computer, some programming skills and an internet connection. Some small real-world problems like this are the best way to improve your skills like in a code kata. In Germany, almost every city is connected by rails and tickets are quite cheap. This reduces the cities we have to consider as small towns don’t have a train station. The cities to consider can be picked from a map.

The solution

I wrote the script in python, but a javascript version should work the same way. One input file is a simple list of cities with the concert locations. The other one is a list of cities which are a reasonable to consider. Then the mean travel time with public transport is calculated for each home city. The results are sorted, so you get a ranking. In her case the best city is Cologne. Cologne is quite well connected, so is not that much surprising. You need an API code for the directions API from the Google developer section in order to Google Maps API. A free API key allows up to 2500 request a day, which is more than enough for this task. Using the API is quite easy, but the documentation for the Python API links to the Javascript one. The code for my implementation can be found here.

As I started my studies I had a lot to learn. Here is a collection of things I learned over time or what felt right in retrospective. Therefore this article may be only interesting for current or ongoing computer science (cs) students or people who want to get some insight into a cs students mind.

Choosing the right computer

As a computer science student, you obviously need a computer. But which one? When I started my studies I bought a MacBook Pro. The times when I only used my computer at home were gone. So a desktop computer is not the right choice. Studying cs you life is focused on your computer. The laptop you use matters a lot and shapes your daily life and matters to your quality of life a lot. As a cs student almost everything you do can be performed by using just that one piece of technology. Therefore many of us carry our laptops with us. I took all of my lecture notes on my laptop. Even the math lectures. Others rely on paper, their mobile phone or tablet. For me, this does not work because I can not properly work without a keyboard and a small screen. For some time I tried using an iPad as a replacement for my laptop but my laptop is a much more powerful tool than a tablet. For some people this also works, but not for me. Nowadays there are some laptop/tablet hybrids, so maybe check them out. I mostly commute by bike or walk. Having a heavy laptop in your rucksack or in an extra case slows you down and makes moving strenuous and takes the feeling of freedom and spontaneity. I recommend against a 15" or even 17" laptop. Get an external screen for your home instead if you want the size. If you don’t want an Apple MacBook you should install windows and ubuntu on two partitions. Many universities offer windows licenses in some software program. You will miss a lot if you don’t work with a Unix system. Because of the huge variety in needs and also the budget, I don’t advice for a specific model. But do not save money on your device. The return of increased production from a better device is huge.

Learn to work from the command line.

You want to understand your computer. You can chain commands together and get a better understanding what is happening under the hood of your computer. If you use macOS, install the shell fish. Zsh is another good alternative available for other Unix systems. It replaces the default shell bash. It comes with some nice features like autosuggestions. This one is also for macOS: Do you know the right-click-“open directory in terminal”-command with Ubuntu? As we will often use the terminal, you can add a similar feature to macOS. For a quick shortcut to open the current Finder directory in the terminal you can download cdto.app and drag it into Finder’s menu bar. Clicking this icon will save you a lot of time.

Learn a scripting language

I suggest learning a scripting language as soon as possible if it is not already part of your curriculum. I mostly use Python, but Ruby is also nice. You could also use JavaScript. JS cannot only run in a browser but also be run by using Java’s Nashorn engine by using the command “jjs” (assuming you have Java installed).

Obtain social skills

There is more than technology. Enjoy your student life. Go partying, do some sport, be engaged in the student union, some political party, or do some other social things. If you are single, start asking people out and go on dates. You should use this time to grow so push yourself to get out of your comfort zone.