Autorenarchiv: dasaweb

Über dasaweb

Blog von einem dieser Daniels: Volgelstraußartiger Friedolin, der auf die Backen braucht. (Props to Felix Blume.)

Unterstellungskaskaden

Im Zusammenhang mit dem “Gaucho-Tanz” auf der WM-Feier in Berlin habe ich eben folgendes gelesen:

„Was für eine ekelhafte Feier“, hieß es auf Twitter. Die armen unwissenden Deutschen wüssten nicht einmal, dass die Bezeichnung als „Gaucho“ keine Beleidigung für einen Argentinier sei, twitterte eine Argentinierin. „Ich hatte die Deutschen für intelligenter gehalten“, so ein anderer Tweet.

Quelle: FAZ

Ganz unabhängig von der Sache (die ich hier nicht diskutieren will) finde ich es immer wieder faszinierend, was Unterstellungen für eine wichtige Rolle in zwischenmenschlichen Beziehungen spielen. Manchmal kommt man zur eigentlichen Unterstellung auch nur über die Konstruktion umständlicher “Unterstellungskaskaden”. Die Mühe macht man sich jedoch gerne.

Eine Spielwiese für jeden (Hobby-) Psychologen.

Elfmeterschießen ist voll ungerecht!

wm2014

Die Gruppenphase der Fussballweltmeisterschaft 2014 ist Geschichte, in wenigen Minuten beginnt die KO-Runde: Wer verliert, ist raus. Das bedeutet auch, dass – anders als in der Vorrunde – bei jedem Spiel ein eindeutiger Sieger ermittelt werden muss. Steht es auch nach Verlängerung unentschieden, dann schafft ein Elfmeterschießen Abhilfe. Die Regeln dafür sind genau festgelegt und nicht allzu kompliziert. Eine ebenfalls simple Sache im Prozedere ist aber doch etwas zu simpel gelöst:

Abwechselnd schießt je ein Spieler beider Mannschaften einen Strafstoß.

via http://de.wikipedia.org/wiki/Elfmeterschießen

In der Praxis sieht das so aus, wenn die Mannschaft X gegen die Mannschaft Y antritt und Mannschaft X beginnt:

XY XY XY XY XY

Gegebenenfalls wird die Reihe weiter verlängert, bis ein eindeutiger Sieger feststeht, aber das hier ist die einfache Grundstruktur. Klingt vernünftig, jedoch zeigen statistische Untersuchungen, dass bei dieser Regelung mit einer Wahrscheinlichkeit von 60% diejenige Mannschaft gewinnt, die den ersten Elfmeter schießt, also in unserem Fall die Mannschaft X. Eine gerechte Reihenfolge dagegen wäre:

XY YX YX XY YX XY XY YX

So eine Abfolge nennt man auch Thue-Morse-Folge. Man beginnt mit XY. Danach nimmt man die bisherige Folge, invertiert sie und hängt sie wieder hinten an: YX. Und immer so weiter. Es lässt sich zeigen, dass das eine gerechte Abfolge wäre. Falls dich das genauer interessiert kann ich dir diese beiden Artikeln aus der “Math up your life!”-Reihe der Zeit empfehlen, in denen das genau erklärt wird. Kleiner Lesetipp für die Halbzeitpause:

Kaugummis: Sympathische Sucht

Extra Professional Peppermint

Ich bin kaugummisüchtig. Wirklich, ich werde ziemlich nervös, wenn ich keine Kaugummis habe. Fragt meine Freunde. In der Regel habe ich Kaugummis a) in meiner Hosentasche und b) zur Absicherung und für den Nachschub in meiner Tasche, in der ich den sonstigen Kram mit mir herumtrage. Ich finde sie blind. Und ich bin wählerisch. Ab und an nehme ich allen Mut zusammen und probiere neue Sorten aus, komme aber immer wieder auf die “Extra Professional Peppermint” zurück. Vermutlich haben sie mich mit dem clever gewählten Namen am Wickel.

Sucht ist Sucht, mit all ihren Problemen. Die Kaugummisucht aber hat auch ihre Vorteile:

Ich bin erleichtert.

 

Bulk Calendar – Mehrere Termine auf einmal bei Google Calendar eintragen

Ihr kennt das: Man will weder einen einzelnen Termin in seinen Google Calendar eintragen, noch einen Serientermin erstellen. Man hat beispielsweise eine Reihe an Seminaren mit verschiedenen Themen, irgendwelche Meetings an wechselnden Orten oder die Fussballtermine der Kinder gegen verschiedene Gegener. Man kann jetzt entweder auf die Details verzichten und doch einen Serientermine anlegen, oder aber man hat viel Handarbeit vor sich.

Genau diese Handarbeit kann man sich deutlich erleichtern, indem man die anzulegenden Termine in eine simple Google Tabelle einträgt und anschließend dort ein Skript startet, welches diese tabellarisch erfassten Daten in einen Kalender einträgt. Es ist schon etwas länger her, dass ich mich auf die Suche nach einem solchen Skript gemacht habe. Daher fehlt mir jetzt leider die Referenz auf das Original an dem ich anschließend noch ziemlich weitergebastelt habe.

Ich habe hier eine Kopie meiner Tabelle erstellt und freigegeben. Sieht in etwas so aus:

Bulk Calendar - Tabelle

Wenn du die Tabelle und das Skript verwenden willst erstellst du dir am besten erst mal eine Kopie der Tabelle (das Skript ist darin eingebettet):

Bulk Calendar - Kopie erstellen

Zuerst muss man logischerweise die gewünschten Daten in die Tabelle eintragen (Tabelle s.o.). Die grau markierten Zellen (Start- und Endzeitpunkt) dürfen nicht editiert werden. Wichtig ist, dass man die Formel in den grauen Spalten nur soweit nach unten kopiert, wie auch Daten in die Zeilen eingetragen sind:

Bulk Calendar - Formeln

Anschließend muss das Skript ausgeführt werden:

Bulk Calendar - Tools - Skriptmanager
Bulk Calendar - Skriptmanager Ausführen

Beim Ausführen des Skript gibt es diverse Kontroll-Dialoge, die man einfach im Skript nach Belieben auskommentieren kann.

Der Vollständigkeit halber hier noch der Code des Skripts. Wie immer quick’n’dirty, tut es aber für mich. Falls jemand damit weiter bastelt bin ich offen für Anregungen.

// Custom Menu:
// see https://developers.google.com/apps-script/guides/bound#custom_menus_dialogs_and_sidebars
function onOpen() {

//  var cals = CalendarApp.getAllOwnedCalendars();
//  Browser.msgBox('Es gibt genau %s Kalender zu Auswahl:', CalendarApp.getAllOwnedCalendars().length);
//  for (var c=0; c < cals.length; c++) {
//    ui.createMenu('Termine eintragen')
//      .addItem(cals[c].getName(), 'TermineInCalendarEintragen')
//      .addToUi();
//  }  

  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Termine eintragen')
      .addItem('Go!', 'TermineInCalendarEintragen')
      .addToUi();

}

function TermineInCalendarEintragen() {

  // Default-Kalender auswählen:
  //var cal = CalendarApp.getDefaultCalendar();

  // Besser: Auswahl an Kalendern anbieten.
  // Ansatz: Alle möglichen Kalender auflisten, per Eingabefeld den gewünschten eingeben lassen:
  var kalenderauswahl = 'In welchen Kalender sollen die Termine eingetragen werden?\\n\\n';
  // Alle eigenen Kalender abrufen:
  var cals = CalendarApp.getAllOwnedCalendars();

  Logger.log('Es gibt genau %s Kalender zu Auswahl:', cals.length);

  // Kalender durchgehen und Ausgabenachricht zusammenbasteln:
  //for (c in cals) {
  for (var c=0; c < cals.length; c++) {
    Logger.log("ID: " + cals[c].getName());
    kalenderauswahl = kalenderauswahl + '- ' + cals[c].getName() + '\\n';
  }
  kalenderauswahl = kalenderauswahl + '\\nBitte Kalendername EXAKT eingeben:';
  var kalendername = Browser.inputBox(kalenderauswahl)
  Logger.log("Kalender: " + kalendername);

  // Jetzt den Kalender mit dem übergebenen Namen auswählen:
  cal = CalendarApp.getCalendarsByName(kalendername);

  // Falls ein (brauchbarer) Kalendername eingegeben wurde:
  if (kalendername && cal.length > 0) {
    Browser.msgBox('Kalender "' + cal[0].getName()  + '" gewählt.')

    // Jetzt werden die Daten aus der Tabelle gezogen:
    var sheet = SpreadsheetApp.getActiveSheet();
    var startRow = 2;
    var numRows = SpreadsheetApp.getActiveSheet().getLastRow()-1;  // -1, weil die Kopfzeile keine Daten enthält
    Browser.msgBox('Es sollen ' + numRows + ' Termine eingetragen werden.')
    // Datenbereich auswählen:
    var dataRange = sheet.getRange(startRow, 1, numRows, 8);
    // Daraus Daten in Variable schreiben:
    var data = dataRange.getValues();
    // Jetzt jede Zeile durchgehen:
    for (d in data) {
      // Daten aus dieser Zeile wählen:
      var row = data[d];

      // Jetzt einzelne Felder davon:
      var title  = row[0];
      var tstart = row[4];
      var tstop  = row[5];
      var loc    = row[6];
      var desc   = row[7];

      // Jetzt wird der Termin eingetragen:
      // https://developers.google.com/apps-script/class_calendarapp?hl=de#createEvent
      cal[0].createEvent(title, tstart, tstop, {description:desc,location:loc});

      // ... und noch eine Meldung ausgegeben. Denn manchmal steigt das Skript aus, und so weiß man, wie weit es war.
      Browser.msgBox( parseInt(d)+1 + '. Termin in Kalender "' + kalendername + '" eingetragen:\\n\\n' + title + '\\n\\n' +  tstart + '\\n\\n' + desc )
    }
    // Am Ende nochmal Meldung, dann ist klar, dass alles durchgelaufen ist:
    Browser.msgBox('Fertig!');
  }
  else {
    Browser.msgBox('Kein Kalender ausgewählt oder Kalender falsch angegeben...')
  }
}

Cross Country: Ein alter Hut

War heute mit dem Mountainbike eine Runde in den Wäldern Südtirols unterwegs. Irgendwie dachte ich, dass das ein relativ junger Sport ist, den ich da betreibe, aber dieses Video eines Cross-Country-Rennens von 1920 beweist das Gegenteil:


via http://overnighter.de/2014/06/video-nicht-neu-cross-country-cycling/

Würde durch Demut

Ich bin jetzt mal so dreist und kopiere nahezu 1:1 einen Beitrag von Gerd. Er verweist auf die Rede des Schriftstellers Navid Kermani zur Feierstunde “65 Jahre Grundgesetz”. Gerd ist darin eine Passage aufgefallen, die auch ich ziemlich bemerkens- und erwähnenswert finde. Es geht darin um Willy Brandts Kniefall von Warschau:

Dies ist noch merkwürdiger als das Paradox mit dem das Grundgesetz beginnt und wohl beispiellos in der Geschichte der Völker: Dieser Staat hat Würde durch einen Akt der Demut erlangt. Wird nicht das Heroische gewöhnlich mit Stärke assoziiert? Mit Männlichkeit und also auch physischer Kraft? Und am allermeisten mit Stolz?
Hier jedoch hat einer Größe gezeigt, indem er seinen Stolz unterdrückte und Schuld auf sich nahm. Noch dazu Schuld, für die er persönlich als Gegner Hitlers und Exilant am wenigsten verantwortlich war. Hier hat einer seine Ehre bewiesen, indem er sich öffentlich schämte. Hier hat einer seinen Patriotismus so verstanden, dass er vor den Opfern Deutschlands auf die Knie ging.

Falls du die durchaus kontrovers diskutierte Rede Kermanis noch nicht angehört hast solltest du das dringend nachholen:

Passwortmanager: KeePass oder nix

Passwörter braucht man heutzutage ja an jeder Ecke, und im Umgang mit Passwörtern kann man so einiges falsch machen: Die Hitliste der am häufigsten verwendeten Passwörtern verschlägt einem die Sprache. Und das ist nur die Spitze des Eisbergs.

Was bisher geschah

Ganz so fahrlässig hatte ich das bisher nicht gehandhabt. Ich hatte schon ein ziemlich ausgeklügeltes System, bei dem ich… Lassen wir das besser. Immerhin hatte ich nicht bei jedem Dienst das selbe Passwort. Richtig verlässlich fand ich das alles trotzdem nicht. Vor allem kann man – vergibt man Passwörter nach einem System – nicht mal so einfach hier oder da ein Passwort ändern, nur weil von diesem Dienst gerade die Passwörter entwendet wurden. Ungefährlich ist ein sorgloser Umgang mit Passwörtern auch nicht, in regelmäßigen Abständen wird z.B. mit geklauten Passwörtern viel Schaden angerichtet (nicht nur finanzieller). Wenn du denkst, das wäre alles halb so wild, dann gib doch mal testweise nur ein einziges deiner Passwörter an deine fünf besten Freunde: Dein Mailpasswort. Na also.

Mein Plan

Ich wollte das endlich besser geregelt haben. Nein, nicht besser, sondern gut. Dazu braucht man 1) für jeden Dienst ein separates Passwort, welches 2) zufällig generiert und ausreichend lange ist. Wenn man diese Anforderungen stellt, führt kein Weg an einem Passwortmanager vorbei. Ein Passwortmanager funktioniert so, dass man alle seine tollen Passwörter in eine Art digitales Safe speichert und sich nur den einen (richtig gut ausgedachten!) Schlüssel dazu merken muss, das Masterpasswort.

Weiterlesen

Dominosteine eng oder weit stellen? Ein Experiment.

Gestern Abend stellte sich der Jüngere beim Spielen mit Dominosteinen eine Frage: Sind Dominosteine auf einer  bestimmten Strecke schneller, wenn man sie maximal weit auseinander oder wenn man sie ganz eng zusammen stellt?

Die Frage ist nicht trivial, immerhin gibt es bei diesem Prozess wohl teils konkurrierende Effekte:

  • Je weiter die Steine auseinander stehen, desto weniger Steine brauche ich für die Strecke, und desto weniger Umfallprozesse müssen stattfinden.
  • Je weiter die Steine auseinander stehen, desto länger dauert ein Umfallprozess, bis er den nächsten triggert.
  • Je enger die Steine zusammen stehen, desto mehr spielen Reibungsprozesse zwischen den Steinen eine Rolle.

Vermutlich wird es also irgendwo einen optimalen Steinabstand geben. Uns interessierten nun die beiden sinnvollen Grenzwerte, die man beim Stellen der Steine üblicherweise verwendet. Jetzt musste ein Experiment her. Wir stellten zwei Reihen an Steinen, die einen sehr eng zusammen, die anderen ziemlich weit auseinander. Die beiden Reihen mussten gleich lang sein, gleichzeitig gestartet werden und die Geschwindigkeit sollte gut sichtbar sein. Bevor du das Video mit der Lösung anschaust: Was ist dein Tipp?

Weiterlesen