The power of good explanation

There is one single thing that will make an astronomical difference between protracted stagnation and open-ended discovery which we call progress. It’s the power of the good explanation. So what is that? Consider this ancient Greek myth:

Hades, God of the Underworld, kidnaps Persephone, the Goddess of Spring, and negotiates a forced marriage contract, requiring her to return regularly, and lets her go. Each year, she is magically compelled to return. Her mother, Demeter, Goddess of the Earth, is sad, and makes it cold and barren. That myth is testable. If winter is caused by Demeter’s sadness, then it must happen everywhere on Earth, simultaneously. So if the ancient Greeks had only known that Australia is at its warmest when Demeter is at her saddest, they’d have known that their theory is false.

If the ancient Greeks had found out about seasons in Australia, they could have easily varied their myth to predict that. They could have changed the entire story around to tell an entirely different myth and still explain the change of seasons. Except, this wouldn’t have gotten them one inch further towards really understanding how seasons change. The story can easily be changed, its elements can be varied and have no merit for themselves outside the story.

This easy variability is the sign of a bad explanation. Without a functional reason to prefer one of countless variants, advocating one of them in preference to the others is irrational.

So, for the essence of what makes the difference to enable progress, seek good explanations, the ones that can’t be easily varied, while still explaining the phenomena. That the truth consists of hard to vary assertions about reality is the most important fact about the physical world. It’s a fact that is, itself, unseen, yet impossible to vary.

Thanks to “brosi” and David Deutsch for inspiring this.

Whatever can be done will be done

In a flat world, whatever can be done will be done. The question is: will it be done by you or to you? Take your pick. Do you want to be in control or do you want to be controlled? If a new technology can be invented, it will be invented. So how do you know what can be done? You’ll never really know unless you go ahead and try it. 99 failures are worth the one big success

Credits go to Thomas L. Friedmann from the NY Times who inspired this.

The Zen of zooming out

There are unlimited opportunities out there just waiting to be found. And still, few people ever do. Why? I think it’s a question of focus. When we think “focus”, we naturally think of zooming in. We get lost in details, loosing the “big picture”. Zooming is not only about zooming in, it’s also about zooming out. Sometimes we need to zoom out –  to see the big picture so we can discover new opportunities. Looking for mushrooms on one square foot is difficult. Zoom in as much as you like, if there are no mushrooms, you won’t find any. Zoom out and you might find an abundance of mushrooms just a few feet away. If you’re tackling a problem, never forget to zoom out. This applies as much to technology as to anything in life.

Email Netiquette

Eines der grössten Probleme mit E-Mail ist wahrscheinlich die Tatsache, dass viele Benutzer keine Ahnung haben, wie man E-Mails korrekt verfasst, formatiert und sendet.

Nachfolgend finden Sie einige der wichtigsten Regeln für den Umgang mit E-Mail 

Grundsätzlich gilt: Benutzen Sie E-Mail so wie Sie es von anderen erwarten

Überlegen Sie sich folgendes: Haben Sie Freude daran, wenn Sie grosse E-Mail Attachments erhalten ohne diese angefordert zu haben? Oder macht es Ihnen Spass, E-Mail auf einem farbig-blinkenden Hintergrund zu lesen, so dass Sie die Schrift kaum noch erkennen können? Mögen Sie die riesige kindische Unterschrift, welche Sie im E-Mail vor einigen Tagen erhalten haben? 

Senden Sie E-Mail im TXT Format anstatt im HTML oder Rich-Text Format 

Es gibt keinen einzigen Grund, E-Mail im HTML Format zu senden – wirklich, keinen Einzigen. HTML ist die Sprache, mit welcher Inhalte für das World Wide Web geschrieben werden. Sie entspricht nicht dem E-Mail Standard. Deshalb kann es jederzeit passieren, dass der Empfänger eine HTML-Nachricht gar nicht erhält, weil seine Software sie nicht lesen kann. 

Nachfolgend eine Zusammenfassung der Fakten, welche gegen den Einsatz von HTML basierenden E-Mails sprechen: 

HTML E-Mail ist gefährlich – Praktisch alle Viren werden heute per E-Mail übermittelt. Beides, TXT und HTML Mails können Malware (Viren, etc.) enthalten, die Gefahr ist jedoch viel grösser bei HTML E-Mails. Der Grund dafür ist, dass sich verschiedene Malware die Schwachstellen im HTML-Parser zunutze macht und nach Ankunft der E-Mails automatisch schädlichen Code ausführt – ohne dass Sie das E-Mail vorher öffnen müssen. 

HTML E-Mail verschlingt Bandbreite – Schauen Sie sich einmal den Quellcode einer HTML-Nachricht an – das ist der Code, welcher gleich nach dem E-Mail-Header kommt – und Sie werden feststellen, dass ein HTML E-Mail doppelt so gross ist im Vergleich zu einem TXT E-Mail. Es kann sogar mehrfach grösser sein. 

HTML E-Mail funktioniert nicht immer – Einige verbreitete E-Mail Clients (z.B. Pegasus) können HTML E-Mails gar nicht lesen. Bei anderen (PocoMail, AOL) wird die Nachricht verzerrt dargestellt.

HTML E-Mail kann eigenmächtig Verbindungen zum Internet aufbauen – Wenn Sie Offline sind können Bilder in HTML Nachrichten selbstständig eine Verbindung zum Internet aufbauen. 

HTML E-Mail ist langsam – Diverse E-Mail Applikationen (z.B. Outlook) können HTML Code nur sehr langsam wiedergeben. Wiederholte Versuche können sogar zum Absturz des E-Mail Clients führen. 

HTML E-Mail ist nicht benutzerfreundlich – HTML erlaubt es dem Absender, kleine und teilweise unlesbare Schriften zu verwenden, unscharfe Farben oder schlecht formatiere Bilder zu übermitteln. Der Empfänger muss dann seine Anzeige anpassen, damit er überhaupt etwas lesen kann. Das führt zu Frust und Ärger. 

Abo-Listen hassen HTML E-Mail – Abo Listen, besonders solche mit Digest, blockieren den Empfang von HTML E-Mails (weil diese im Digest als Code-Wirrwarr dargestellt werden). 

Fragen Sie nach, bevor Sie Attachments senden 

Das Empfangen von idiotischen 2MB-Bildern, flash-basierenden Geburtstagskarten, Filmen oder sonstigem Unsinn kann frustrierend sein. Denken Sie daran, dass es viele Leute gibt, welche nur ganz kurz ihr E-Mail kontrollieren möchten und anschliessend 20 Minuten warten müssen, bis irgend ein riesiger Download abgeschlossen ist. 

Wenn Sie einmal wirklich eine Datei via E-Mail senden müssen, komprimieren Sie diese vorher mit einem Komprimierungsprogramm (TotalCommander, WinZip, WinRAR,7-Zip, etc.). 

Dazu kommt, dass viele E-Mail Server limitierte Postfachgrössen haben. Wenn jemand in den Ferien ist, kann es leicht passieren, dass wegen idiotisch grossen E-Mails das Postfach relativ schnell überfüllt und deaktiviert wird. Wollen Sie der Grund dafür sein, dass Ihr Kunde keine E-Mails mehr empfangen kann? 

Deshalb sollten Sie immer beim Empfänger nachfragen, bevor Sie grössere Dateien per Email senden. 

Seien Sie zurückhaltend  mit dem Versand von Word Dokumenten (.doc) 

Ähnlich wie mit HTML E-Mails, ist es auch bei Word Dokumenten so, dass wegen der Formatierung die Dateien selbst unnötig gross sind und alle möglichen Arten von Viren enthalten können. In über 90% der Fälle kann der Inhalt einer Word-.doc Datei als gewöhnliche Textdatei verschickt werden (.txt). 

In 90% der verbleibenden 10% aller Fälle, wenn Ihnen das Layout eines Dokumentes wirklich wichtig ist, kann die Datei als Rich Text File (.rtf) formatiert werden. Eine .rtf-Datei ist viel kleiner als eine .doc-Datei und kann von viel mehr Clients auf verschiedenen Plattformrn gelesen werden. Übrigens sind .rtf – Dateien quer über die Versionen kompatibel – im Unterschied zu MS Word. 

Wenn möglich, konvertieren Sie die Dateien ins Adobe Format (.pdf). So können Sie die Formatierung erhalten und das Risiko von Malware-Infektionen minimieren. 

SCHREIBEN IN GROSSBUCHSTABEN = SCHREIEN!

Wenn Sie in Grossbuchstaben schreiben sieht das für den Empfänger so aus, als ob Sie schreien würden. Benutzen Sie die Caps-Taste äusserst zurückhaltend. Wenn Sie mir ein E-Mail in Grossbuchstaben schreiben, können Sie sicher sein, dass es ungeöffnet und ungelesen im Papierkorb landen wird. 

Leiten Sie nie Nachrichten weiter, welche sie dazu auffordern 

Das Netz ist mit Datenschrott überlastet – das meiste davon Spam. Es gibt aber auch noch die Netz-Version der bekannten Kettenbriefe – „senden Sie eine Kopie davon an alle Bekannte…” – i.d.R. mit irgend einer herzzerreissenden Geschichte und einer Andeutung, dass es der ganzen Welt besser gehen wird wenn sie es tun. Vergessen Sie das. Im besten Fall ist es eine Verschwendung von Bandbreite, im schlimmsten ein Virus. 

Wenn Sie der Welt helfen möchten benutzen Sie vermehrt öffentliche Transportmittel, spenden Sie einen Beitrag an Pro Infirmis oder tun Sie sonst etwas Sinnvolles. 

Halten Sie weitergeleitete E-Mails sauber 

Wir bekommen alle regelmässig unseren gerechten Anteil von E-Mail-Witzen und sonstiger Ware, welche wir manchmal mit unseren Freunden, Kollegen oder Familie teilen wollen. Wenn Sie solche E-Mails einfach weiterleiten, wächst die Grösse dieser E-Mails über die normalen Proportionen hinaus. Ausserdem sind dann oftmals auch die E-Mail Adressen aller anderen Empfänger ersichtlich und Sie verletzen damit vielleicht die Privatsphäre einzelner Personen. 

Säubern Sie solche E-Mails von allen möglichen Cc:’s und leiten Sie sie erst dann weiter. 

Wenn Sie E-Mails an mehrere Empfänger verschicken, benutzen Sie das Bcc: Feld 

Der Versand von E-Mails an mehrere Empfänger mag ja ganz cool sein (speziell für Spammer…). Wenn Sie aber das To: oder Cc: Feld dafür benutzen, ist Ihr E-Mail gefundenes Fressen für Spammer und andere niedere Lebensformen. 

Benutzen sie das Bcc: Feld (= blind carbon copy) – So können Sie E-Mails an verschiedene Personen senden und verhindern, dass potentielle Spammer die Adressen „ernten”. 

Vergessen Sie „ich auch” – E-Mails 

Es interessiert mich nicht, ich will es nicht wissen, also senden Sie mir niemals E-Mails um mir so was  mitzuteilen. Wenn Sie Ihre Gefühle wirklich mit jemandem teilen möchten, setzen Sie eine Nachricht mit normalem Inhalt auf. Verzichten Sie auf „ich-auch”-E-Mails und vermeiden Sie damit Verschwendung von Zeit und Bandbreite. 

Benutzen Sie einen aussagekräftigen Betreff in der Betreffzeile 

Die Betreffzeile sollte einen direkten Zusammenhang mit dem Inhalt haben. Stellen Sie sicher, dass der Empfänger anhand der Betreffzeile weiss, worum es geht. Ausserdem sind gute und aussagekräftige Betreffzeilen eine grosse Hilfe bei der späteren Archivierung (und Wiederfindung) der E-Mails. 

Senden Sie nie E-Mail mit leerer Betreffzeile – solche E-Mails haben für den Empfänger keine Bedeutung. E-Mails ohne Betreffzeile werden bei mir direkt in den Papierkorb geleitet, ohne dass ich sie jemals sehe. 

Fügen Sie Ihren E-Mails eine schlichte Signatur zu 

Menschen wollen gerne wissen, mit wen Sie es zu tun haben. Der Versuch, ein E-Mail wie jo34567@hotmail.com zu dechiffrieren kann eine echte Herausforderung sein. Auf die E-Mail Signatur gehören Vorname Nachname und E-Mail Adresse. Bei geschäftlichen E-Mails fügen Sie noch den Firmennamen, Ihren Titel, ev. Ihre Postleitzahl und die Telefonnummer hinzu. 

Lassen Sie Bilder, Farbe, Logos, Animationen oder grosse Attachments ganz weg. Diese gehören nicht in die Signatur. 

Prüfen Sie die Rechtschreibung 

Nichts übermittelt einen schlechteren Eindruck als Rechtschreibefehler. Installieren Sie eine Rechtschreibekorrektur und benutzen Sie diese vor dem Senden. 

Prüfen und evaluieren Sie Ihr E-Mail nochmals vor dem Versand 

Verschiedene Menschen haben verschiedene Perspektiven, kulturelle Hintergründe, Erfahrungen und Werte, je nachdem wo sie aufgewachsen sind und/oder wo sie leben. Danken Sie daran, bevor Sie Ihren Witz per E-Mail verschicken. 

Denken Sie auch daran, dass Sie Ihre Nachrichten oftmals an ganz fremde Menschen schicken. Es muss nicht sein, dass diese den gleichen Sinn für Humor oder Sarkasmus haben wie Sie. 

Lesen Sie Ihr E-Mail in Ruhe nochmals durch, bevor Sie auf den Senden-Knopf drücken. Stellen Sie sicher, dass Sie vom Empfänger nicht missverstanden werden und eliminieren Sie alles, was zweideutig erscheinen kann.

Database Normalization

All right, this is for those of us who learned this stuff 20 years ago and haven’t used it much ever since. I recently came across a problem which required me to normalize some tables. Well OK, I still remember the hard facts, but it did take some reading up to get the data into 3rd Normal Form. So I guess I’m doing this post a bit for my own sake too. Here it goes:

Data Normalization is one of the key steps to be taken in database modeling and it touches base on the set theory in good old Algebra (now you remember the set theory, don’t you?).

Normalization is the process of organizing Data inside a Database. It is necessary in order to avoid:

(1) Data redundancy
(2) Inconsistent dependency

By normalizing the data we make sure that we can trust our database to perform as originally intended. Thus, the first step is to bring the data into 1st Normal Form (1NF). This means eliminating repeating groups of data within tables, creating separate tables for all data sets which are related to each other and marking every set of data with a unique primary key. Consider the following student database:

StID

Advisor

Room

Course1

Course2

Course3

1022 Jones 412 101-07 143-01 159-02
4123 Smith 216 201-01 211-02 214-01
7861 Grey 323 302-06 233-03 217-09

Having data like this would mean that if we were to take, say Course Number 159-02 out of the curriculum, we would delete the Student Jones and the Room 412 at the same time. This does not seem like a very good idea.

This table is said to be in non-normalized form, since there are repeating groups evident. We are running the risk of losing data each time we update our little database. Data should always be 2-dimensional within tables – which the above data clearly is not. The repeating groups are the course numbers Course1, Course2 and Course3 (since a student can be enrolled into more than one course, it does not make sense to have the courses sitting in rows. Thus, this table violates 1NF.

The first step is to put this table into 1NF: No repeating groups. One thing to remember here is that 1 and n are not supposed to be in the same table. Now consider this:

StID

Advisor

Room

CourseID

1022 Jones 412 101-07
1022 Jones 412 143-01
1022 Jones 412 159-02
4123 Smith 216 201-01
4123 Smith 216 211-02
4123 Smith 216 214-01
7861 Grey 323 302-06
7861 Grey 323 233-03
7861 Grey 323 217-09

Looks a bit better, right? The above table is now in 1NF, however, there are still some problems with it. Also, there seems to be no functional dependency between the Student ID and the Course ID. This means that the table is lacking 2NF. We will have to split this table in order to create functional dependencies. Thus we’ll create another entity called “Registration”.

Table Students:

StID

Advisor

Room

1022 Jones 412
4123 Smith 216
7861 Grey 323

Table Registration:

StID

CourseID

1022 101-07
1022 143-01
1022 159-02
4123 201-01
4123 211-02
4123 214-01
7861 302-06
7861 233-03
7861 217-09

Now this seems yet better, but we’re not quite there yet. In order to finish this properly, the database must be in 3NF, which means eliminating data which is not directly dependent on the primary key. For example, in the table “Students” above, “Room” (the advisor’s office number) is functionally dependent on the Advisor attribute. The solution is to create a third table “Faculty”:

Table Students:

StID

Advisor

1022 Jones
4123 Smith
7861 Grey

 Table Faculty:

Name

Room

Dept

Jones 412 42
Smith 216 42
Grey 323 42

Overall, these are the the steps to follow in database modeling:

(1) Identify candidate keys
(2) Select the primary key
(3) Apply normalization (NF1 thru NF3)
(4) Do an ERD (Entity Relationship Diagram)

The following is a summary of the Data Normalization Rules:

First Normal Form (1NF)
– Eliminate repeating groups in individual tables
– Create a separate table for each set of related data
– Identify each set of related data with a primary key

Second Normal Form (2NF)
– Create separate tables for sets of values that apply to multiple records
– Relate these tables with a foreign key

Third Normal Form (3NF)
– Eliminate fields that do not depend on the primary key

For the purpose of having a functioning database, going through Normal Forms 1-3 is sufficient. While there are several more Normal Forms, they do little more than offer database perfection which in some instances can be more an obstacle than a benefit. Thus, I will not discuss these at this point.

I hope that I was able to shed some light into this classical “motivation killer” for ongoing database students. I would also like to use this opportunity to give credit to the people who have helped refresh my gray brain cells on this subject. Here they are:

– Gerald V. Post: Database Management Systems 3rd Ed., McGraw Hill 2005
http://de.wikipedia.org/wiki/Normalisierung_(Datenbank)
– Microsoft Support KB283878
– Datamodel.Org – Rules of Data Normalization

And remember: Practice makes perfect!

Cheers!

Boris