WebMontag – Warten auf 2.0

WebMontag

Man soll ja immer mit den guten Sachen beginnen, also erzähle ich mal, dass die Location (Hallmackenreuther) zwar über einen kaum zu merkenden Namen, aber trotzdem über einen gewissen Charme verfügt. Auch dass überhaupt so viele Leute da waren, ist positiv zu erwähnen. Das war es aus meiner Sicht aber auch schon…

OK, ich bin auch bereits nach dem Plazes-Vortrag gegangen, aber mehr Belanglosigkeit wollte ich mir dann an dem Abend auch nicht mehr antun. Und dafür macht man extra früher Feierabend und stürzt sich in das Kölner Verkehrschaos. Echt erstaunlich, wie wenig Verkaufstalent in Stefan Kellner steckt. Da sind 70 Blogger anwesend und er kann nicht vermitteln, warum jetzt jeder am Besten sofort (WLAN war vorhanden), einen Plazes-Account erzeugen soll. Vielleicht gibt es ja auch nicht wirklich einen Grund. Nicht umsonst sind LBS (Location Based Services) zwar schon seit langem in aller Munde aber selbst die Mobilfunkanbieter haben nicht wirklich was anzubieten. Und die haben einen weitaus höheren Benutzerstamm als Plazes.com mit aktuell etwa 15.000 getaggten Plazes (nicht Mitgliedern!).

Und warum Präsentationen nicht mal vorbereitet werden und der Zuschauer mit Fehlern und Wiederholungen gelangweilt wird, erschliesst sich mir auch nicht. Klar, ein gewisses Networking war möglich und ich habe mich gefreut ein paar bekannte Gesichter wiederzusehen und bisher unbekannte Gesichter und deren Träger kennenzulernen. Aber das hatte irgendwie nicht viel mit Web und schon garnicht der Version 2.0 davon zu tun.

Way to go, WebMontag! Und beim nächsten Mal bitte mit Rauchverbot im Veranstaltungsraum – Danke.

(Klick auf das Photo für weitere Eindrücke vom ersten WebMontag.)

Mehr Blogbeiträge, Photos und Links bei: taggling.com/tag/webmontag

unsicht-Bar: Essen ohne zu sehen

Unsicht-bar

Gestern Abend ging es nach Köln (es gibt auch eine Filiale in Berlin) in die unsicht-Bar, trotz des Namens eher ein Restaurant, als eine Bar.

Das Besondere ist, dass es in dem Restaurant wirklich komplett dunkel ist. Rauchen ist aus naheliegenden Gründen verboten, Mobiltelefone müssen ausgeschaltet und Uhren mit phosphorisierenden Beschichtungen abgenommen und in die Tasche gesteckt werden.

Die Kellner sind stark sehbehindert und führen den Gast so in eine Welt ohne Licht, die für viele Menschen schlicht unvorstellbar ist. Einige Bekannte und Freunde konnten sich garnicht vorstellen zu Essen, ohne etwas zu sehen. Entweder, weil man gerne sehen wollte, was man isst, oder aber, weil die Handhabung von Messer und Gabel im Dunkeln nicht möglich schien.

Die Bestellung des Menüs erfolgt sinnvollerweise im beleuchteten Foyer der unsicht-Bar. Die Auswahl ist dabei auf Überbegriffe wie „Vegetarisch“, „Lamm“, „Geflügel“, etc. eingeschränkt. Dadurch bleibt die Spannung beim Essen erhalten: ist das wirklich eine Tomate? Und das hier eine Olive? Es ist schon ausgesprochen interessant, wie schwer es manchmal fällt, das Gegessene zuzuordnen.

Entgegen meiner Annahme war es im Restaurant relativ laut, ich hatte eher eine gedämpfte Geräuschkulisse erwartet. Im Hintergrund lief aber Musik und man hörte viele Stimmen. Das nahm einem dann auch die Scheu sich zu unterhalten. Es war also wie ein ganz normaler Besuch in einem Restaurant. Lustig auch, wenn man mitbekam, wie die Tischnachbarn „zuhörten“, als ich mit meiner Begleitung versuchte zu koordinieren, die Suppentassen untereinander zu tauschen – man will ja auch mal probieren, was der andere so isst. In solchen Momenten kam man sich schon beobachtet vor, was aber auch nette Kontakte hervorbrachte.

Das Essen selbst war lecker, man darf auch nicht erwarten, das die Speisen schon mundgerecht zubereitet sind. Das Verwenden von Messer und Gabel war Pflicht, auch wenn man sich zwischendurch natürlich mit den Händen auf dem Teller orientieren konnte. Es hat ja niemand gesehen :-)

Insgesamt eine sehr interessante Erfahrung und ein Abend in schöner Umgebung. Bis zum Ende des Jahres bietet die unsicht-Bar Sonntags sogar einen Brunch mit Liebesgedichten an. Auf jeden Fall eine Empfehlung, vielleicht auch für das eine oder andere vorgezogene Weihnachtsgeschenk.

Spam von Websitedesjahres.de

Da will wohl jemand seinen Pagerank aufpolieren und ruft deshalb zur Wahl der Besten Website des Jahres auf. Unter anderem sind Blogger.de und Blogscout.de nominiert.

Bei den ersten zwei Mails, die ich letzte Woche von denen erhalten habe und in denen mir mitgeteilt wurde, dass die Sites nominiert wurden, habe ich ja noch müde gelächelt und den Löschen-Knopf gedrückt. Inzwischen habe ich aber schon sechs oder acht bekommen und inzwischen auch an Mailadressen wie traffic@, die es garnicht gibt und nur wegen des Catch-Alls zu mir gelangen.

Deshalb frei nach Helge Schneider: Ich prangere das an!

MySQL 5: Trigger sind da!

Für den Counterkram habe ich die Datenbank gestern auf MySQL 5 aktualisiert. Der wichtigste Grund war die Einführung von Triggern. Mit diesem (bei „richtigen“ Datenbanken schon lange vorhandenen) Feature ist es möglich, innerhalb der Datenbank direkt auf SELECT, UPDATE oder INSERT einer Tabell zu reagieren und weitere Aktionen anzustoßen.

Momentan halte ich die Daten für stündliche, tägliche und monatliche Zugriffe auf die einzelnen Blogs in separate Tabellen der gleichen Datenbank fest. Natürlich könnte man auch mit nur einer Tabelle auskommen, nämlich einer, in der die Zugriffe protokolliert werden und mit entsprechenden SUM– und GROUP BY-Spielereien die gewünschten Daten aus dieser einen Tabelle auswerten.

Diese Tabelle wird aber ziemlich schnell sehr groß und damit auch träge, wenn man nicht gerade viel Geld in teure Hardware steckt. Um dieses Problem zu lösen, habe ich mich also für die redundante Speicherung der Daten entschieden. Bevor ich auf MySQL 5 umgestiegen bin, musste ich dies aber auf Applikationsebene machen, was mir nicht besonders gefällt, da es (a) genau für solche Fälle Trigger gibt und (b) die Daten einfach konsistenter sind, wenn die Datenbank sich um die redundante Speicherung kümmert.

Nun kommen also die Trigger ins Spiel. Dafür nehmen wir ein einfaches Beispiel an: In den Logfiles ist der User-Agent schon so aufbereitet, dass nur noch „Internet Explorer“, „Safari„, etc. als Browser angegeben ist. In einer separaten Tabelle soll nun pro Blog eine Statistik der verwendeten Browser abgelegt werden. Dabei interessiert nur die monatliche Verteilung. Die Tabelle tbl_browser_stat hat also die drei Felder blog_id, month, browser und impressions.

Über einen Trigger soll nun bei jeder neuen Zeile in der Tabelle mit den Logfile-Zeilen, die Tabelle tbl_browser_stat aktualisiert werden. Und hier kommt jetzt ein weiteres, kleines Problem ins Spiel: Falls für die Kombination aus Browser und Blog noch kein Eintrag in der Datenbank vorhanden ist, muss ja ein INSERT statt eines UPDATEs gemacht werden. Dafür gibt es in MySQL das Konstrukt INSERT ... ON DUPLICATE KEY UPDATE .... Deer Trigger sieht dann also folgendermaßen aus:

CREATE TRIGGER monthly_browser_stats AFTER INSERT ON tbl_log_rows
    FOR EACH ROW
        INSERT INTO tbl_browser_stats SET blog_id=NEW.blog_id, month=NEW.month, browser=NEW.browser, impressions=1 
        ON DUPLICATE KEY UPDATE impressions=impressions+1;

Auf der Tabelle tbl_browser_stats wurde ein UNIQUE-Key auf die Kombination von blog_id, month und browser angelegt. Von nun an wird die Tabelle automatisch gefüllt und es können sehr einfach die Verteilung der Zugriffe bestimmter Browser auf einzelne oder alle Blogs abgefragt werden. Die Applikation wird von mir in den nächsten Tagen schrittweise von diesem Ballast befreit, neue Statistiken können dann fast ausschließlich über neue Trigger realisiert werden.