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.
Warum guckst du denn da nicht einfach im Source nach?
https://erdgeist.org/cvsweb/Fefe/blog/blog.c
Grüßis,
erdgeist
Danke. Der Quellcode ist bei dir auf dem Server prima versteckt.
Den Source gibts bei Fefe im CVS, ich hab da einzig ein webcvs rangebammelt. Da hättest Du bei einer echten Rechereche vorbeikommen müssen.
Dann hätte ich wohlwollend eingestehen müssen, dass der fefec0de alles andere als geheim ist und nie einen Artikel darüber geschrieben. Wäre doch schade.
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.
ts ^= 0xfefec0de; /* hehe */
So als Hinweis, wonach du suchen solltest.
Was will er uns mit c0 sagen?
Das Wort „Code“ ist dir bekannt?
Ich hielt de für die Domain. c0de kenne ich natürlich. Danke.
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.
Hint: Fefe war für ein größeres amerikanisches Softwarehaus auch mal etappenweise vor Ort tätig…
Verwirr uns nicht mit Fakten. Wenn du möchtest, kannst du aber gerne an die auffälligen Muster Ereignisse schreiben.
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… 🙂
rerefefe ist übrigens kaputt
und netaction.de auch (für jegliche Anfrage ohne ‘www.’)
Das kann ich nicht nachvollziehen:
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.
Die Umleitung auf https://www.netaction.de/ bekommst du, und dann liefert der Server 200 “Hallo Welt!”?
Bei rerefefe ist der Cronjob abgeschmiert, sorry. Das konnte ich mir mit deiner Fehlermeldung “kaputt” nicht zusammenreimen.