Datenvisualisierung von Fefes Blogzeiten

Ja, ich lese Fefe. Manche Themen sind gut recherchiert, über andere kann ich nur den Kopf schütteln, aber darum soll es hier nicht gehen. Auffällig an dem Blog ist, das er keine Uhrzeiten enthält. Auch im RSS-Feed fehlt jede Angabe. Allerdings haben die Beiträge eine Identifikationsnummer der Art b308810e. Ich wollte wissen, was diese Zeichenketten bedeuten.

Liest man sie als hexadezimale Zahl, ergibt sich für die Posts eines Tages eine absteigende Nummerierung. Über die Jahre fällt die Zahl sogar sehr stark. Es muss also einen Zusammenhang mit der Uhrzeit geben, auch wenn etliche Sprünge enthalten sind. Wer möchte, kann sich das mal ansehen. Nach rechts geht die Zeit von 2005 bis 2011, nach oben sinken die IDs. Jeder Punkt steht für einen der 21’786 Posts. Deutlich zu sehen sind die Sprünge alle 0x80000000 Sekunden. Fefe hat nämlich neun Bits der ID invertiert. Dreht man sie mit XOR 0x81013f00 wieder richtig, sind die IDs stetig absteigend. Da er anscheinend ein Fan von binären Operationen ist, beträgt die Differenz zwischen ID und Unix-Zeitstempel genau 0x80000000.

// Good old PHP:
$id = hexdec($id);
$id = $id ^ hexdec("81013f00");
$id = hexdec("80000000") - $id;

Zum Schluss baute ich eine Visualisierung der Blogzeiten (HTML4-Retro-Version), in der deutlich zu sehen ist, wann Fefe nicht bloggen konnte. Für mich ist es immer wieder erstaunlich, was man mit einer Idee und öffentlich verfügbaren Daten zeigen kann.

Update

Ich habe nicht bedacht, dass man durch Invertieren aller Bits aus absteigenden Zahlen aufsteigende machen kann. Es reicht also zum Wiederherstellen der Zeiten:

# ID = ID XOR 0xfefec0de
# Diesmal in SQL:
FROM_UNIXTIME(CONV(UPPER(`id`), 16, 10) ^ 0xFEFEC0DE)

Ich ging schon davon aus, dass die Zahl fefe enthalten sein wird, fand sie aber nicht. Für euch noch ein kleines Script zum Umrechnen, gebt einfach die ID ein oder eine ganze URL:

<input id="fefets" />
<span id="fefets2"></span>

<!-- Und noch etwas jQuery: -->
<script type="application/javascript">
jQuery(function() {
  jQuery('#fefets').change(function() {
    var fefets = new Date((parseInt(jQuery('#fefets').val().
         replace(/[^a-f0-9]/gi, ''),16)^0xfefec0de)*1000);
    jQuery('#fefets2').html(' wurde erstellt am '+ 
         '<em>'+fefets.toLocaleString()+'</em>.');
  });
});
</script>

Update 2

Fefes Blog mit Uhrzeiten gibt es auf rerefefe.netaction.de. Die Seite steht unter GPL2, die Kommentare kommen von refefe.

Update 3

Gerade sehe ich, dass Datenjournalismus eine lange Tradition hat. Im Oktober 1941 zählte der Justizbeamte Friedrich Kellner die insgesamt 281 Todesanzeigen seiner Tageszeitung. Mithilfe weiterer Daten kam er auf 30’000 gefallene Soldaten pro Monat plus Dunkelziffer. Aus heutiger Sicht klingt das banal, aber damals wollten die meisten Deutschen glauben, es gäbe kaum Todesfälle in den eigenen Reihen.

Update 4 – November 2019

Nicky Reinert hat unter nickyreinert.de/fefes-blog-eine-analyse/ eine sehr detaillierte Analyse von Fefes Posts veröffentlicht.

25 thoughts on “Datenvisualisierung von Fefes Blogzeiten”

  1. Und ich hatte ihn mal gebeten, in den RSS Feed wenigstens das Datum rein zu tun, er meinte, er hinterlässt kein Onlineprofil von sich. Und die Funktion Timestamp → URL sei auch ganz geheim 🙂

    Danke 😉

    • Ahja. Die unschlagbare Fefe-Logik. Ich habe eigentlich nur eine Möglichkeit gesucht, aus den Informationen Datum, ID, Text die Reihenfolge der Posts innerhalb der Tage zu ermitteln. Das brachte mich erst dazu, die ID zu entschlüsseln.

      Man kann auch sagen: Obskuritäten ziehen Hacker an, das müsste er doch eigentlich wissen.

  2. m.A. falsch interpretiert…die Lücken sind eher die Zeiten, zu denen er schläft und ergo nichts schreiben kann.

    • Dann fiel er jeden Morgen um 17-18 Uhr mit einem Haufen neuer Posts aus dem Bett. Ich denke eher, dass die Posts in der Offline-Zeit vorbereitet wurden und dann auf einen Schlag ins Netz kamen.

      Normalerweise bloggt er zwischen vier und neun Uhr nicht, da wird er er wohl schlafen. Nur in den Monaten mit den Lücken schrieb er auch nachts. Das spricht für deine Theorie.

  3. Cool, wir wissen jetzt, wann Fefe schläft… Hält bitte da dann jemand die Welt an, damit der Arme nichts verpasst? Ich finde 4 Stunden Schlaf eh schon beeindruckend, und teilweise scheint er ja auch gar nicht zu schlafen… Mysteriös… 🙂

    • Das kann ich nicht nachvollziehen:

      $ wget netaction.de
      --2011-11-23 18:48:40--  http://netaction.de/
      Auflösen des Hostnamen netaction.de... 213.239.202.144
      Verbindungsaufbau zu netaction.de|213.239.202.144|:80... verbunden.
      HTTP-Anforderung gesendet, warte auf Antwort... 302 Found
      Platz: http://www.netaction.de/ [folge]
      --2011-11-23 18:48:40--  http://www.netaction.de/
      Auflösen des Hostnamen www.netaction.de... 213.239.202.144
      Wiederverwendung der bestehenden Verbindung zu netaction.de:80.
      HTTP-Anforderung gesendet, warte auf Antwort... 302 Found
      Platz: https://www.netaction.de:443/ [folge]
      --2011-11-23 18:48:40--  https://www.netaction.de/
      Verbindungsaufbau zu www.netaction.de|213.239.202.144|:443... verbunden.
      HTTP-Anforderung gesendet, warte auf Antwort... 200 OK

      Ebenso für rerefefe.netaction.de.

      • bestreite ich garnicht, sieht hier genauso aus
        allerdings kommt mit dem Status 200 nur eine Datei deren vollständiger Inhalt “Hallo Welt!” darstellt.

        Zu rerefefe: Das tut wieder, gestern und vorgestern waren da keine aktuellen Posts vorhanden.

Leave a Comment