Some months ago I found a cheat sheet about navigation keystrokes. They are very helpful for improving your terminal performance. Every shortcut is usually documented at the right to the menu items. However this time you don't have that comfort. The handy cheat sheet has some flaws: Some Unix shortcuts do not work on macOS e.g. Alt+B creates the character "∫" instead of moving the beginning of the word.

I also found more shortcuts by trial and error and upgraded the graphic accordingly. You can get it here as png, pdf or omni graffle file.

Cheatsheet for iTerm
Diagram showing AI terms

If you sometimes use the macOS Terminal application I advise you to upgrade to iTerm 2.

If you do a web search for Deep Learning, Machine Learning and all the differences you will often find a graph which includes all those three terms. I think this can be done more detailed. I did not find any graphic showing more than three layers so I did my own. Open image in a new tab for full image display.

The structure is hierarchically so everything e.g. Convolutional Neural networks are used in Deep Learning, which is a part of the Neural Network Landscape etc. Circles which cut other circles mean that a part of this field or method is also part of another field or method or their classification is ambiguous.

Please write me if you have any suggestions or don't agree of my choice of circles.

Update: Thanks for Jonas K. for pointing out that Evolutionary & Genetic Algorithms are not a subset of Machine Learning but algorithms used in Machine Learning. I updated the diagram accordingly.

Diagram showing AI terms
Diagram showing AI terms

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.