Samstag, August 26, 2006

Sonstiges: Eigene Beurteilung schreiben

Es gibt meiner Meinung nach zwei mögliche Ausgangssituationen für die Anweisung, sich seine Beurteilung selbst zu schreiben:

  1. Der Chef ist sehr zufrieden mit der geleisteten Arbeit, hat aber keine Lust sich selbst die Mühe zu geben, dem getreuen Mitarbeiter eine persönliche Beurteilung zu schreiben. Das ist einerseits ok, kann sich doch der “Delinquent” mit ein bisschen Mühe und ein paar Recherchen ein zukunftsfähiges Zeugnis ausstellen. Auf der anderen Seite ist es ein Unterschied fürs Ego, ob man sich selber lobt, oder ob es direkt vom Chef kommt inklusive persönlicher Note. Wenigstens den Schlusssatz würde ich mir als Chef nie nehmen lassen. In vielen Unternehmen scheint es leider nicht mehr so zu sein, dass es die oberste und höchste Verantwortung des Chefs ist, das Personal zu steuern und als Kümmerer für alle Belange auch ansprechbar zu sein.

  2. Es handelt sich um einen Test. Wie schätzt sich der Untergebene selber ein? Ich gebe zu, dass das sehr interessant für den Chef sein kann. Dennoch finde ich das ehrlich gesagt eine ziemlich miese Nummer. Der Untergebene kann dabei nämlich nicht gewinnen. Schätzt er sich “marktüblich” ein und lobt sich in hohen Tönen steht er als arrogant dar. Ist er realistisch und bescheiden, übernimmt der Chef vielleicht Teile und man kann nicht mal klagen, weil man es ja selbst geschrieben hat. Ein wohlwollender Chef wird seine Mitarbeiter nicht in so eine Zwickmühle hineinmanövrieren. Stattdessen wird er ein angekündigtes Gespräch führen und in aller Ruhe das durch den Mitarbeiter Erreichte sowie dessen Stärken und Schwächen besprechen.


Allerdings ist es für jeden einzelnen sehr wohl sinnvoll, sich selbst und nur für sich selbst einmal eine Beurteilung auszustellen. Das schult in mancherlei Hinsicht. Zum einen macht man sich viel zu selten seine eigenen Erfolge bewusst. Zum anderen erkennt man vielleicht auch wirkliche Schwächen im Gesamtprofil, die es anzupacken gilt.

Ich empfehle die Handelsblatt-Rubrik Business Behavior, wo ich zu diesem Thema auch einen guten Beitrag gelesen habe, den ich jetzt aber leider nicht mehr finde.

Sonstiges: Anzeige gegen Unbekannt

Heute habe ich die erste Strafanzeige in meinem Leben gestellt. Ich hatte ja kürzlich schon berichtet, dass ich einen Anruf von einem Mann bekommen habe, der mir vorgeworfen hat, eine eBay-Bestellung nicht verschickt zu haben. Ich war damals ziemlich sicher, dass es sich bei dem Anruf um eine Betrügerei handelte. Inzwischen sehe ich das anders. Was ist passiert? Ich habe noch einen Anruf bekommen, ähnliches Problem. Und kürzlich hatte ich sogar eine Postkarte in meinem Briefkasten, auf der mich Eltern handschriftlich darum gebeten haben, doch endlich das Lego für ihr Kind zu verschicken.
Ich fürchte nun also, dass jemand meine Identität benutzt hat. Meine Accounts sind zwar sauber, allerdings steht meine Adresse ja im Internet und wie könnte schon jemand daran gehindert werden, sich mit diesen Daten bei einem Anbieter anzumelden?
Keine Ahnung, wie ich mich zukünftig gegen sowas wehren soll. Eigentlich müssten die Anbieter eine Verifizierung meiner Identität vornehmen. Soweit ich mich erinnern kann, ist das bei eBay sogar passiert. Ich werde vermutlich ohne Probleme aus der Geschichte rauskommen, ärgerlich und Arbeit ist es aber allemal. Und die Leute tun mir leid, die jetzt vielleicht etwas bezahlt haben und nun auf ihr Produkt warten und es wahrscheinlich nie erhalten werden.

Freitag, August 25, 2006

DB,SNA: Degrees of Separation

In a previous post I already described the power and usefulness of Self Joins. In this article I want to go one step further and address a possible approach to the computation of the famous indicator "degrees of separation" (see Six degrees of separation) by using database self joins. The algorithm can be used for computations on nearly arbitrary networks, either directed or undirected ones, either weighted or uniform networks. As byproducts the algorithm provides the diameter of the network and the best reachable person within the network.
The degrees of separation are defined as the medium distance between each pair of people/nodes in a network. So the first and most complex step is the generation of the closure of the network, i.e. a table that contains each pair of nodes and their minimal distances (shortest path). This is done by a flooding algorithm. After the n-th iteration all pairs of nodes are in the IterationTable that are n+1 steps apart at the very most.
Precondition: All direct links are given in table Relations (columns source, sink, weight (is 1 for unweighted graphs)). If you want to consider the network as undirected do not forget to add the corresponding backlinks as extra rows (union of the relation and its transposed pendant).

  1. Construct the table IterationTable and fill it with the contents of table Relations.

  2. Execute the SQL-Query IterationStep as long as the view Distances is changing. Remove redundant and unnecessary rows after each step (you may store the result of Distances in a temporary table, clear IterationTable and feed the data from the temporary table back in IterationTable).


Thereby the view Distances is given by

SELECT source, sink, MIN(distance) AS mindistance
FROM IterationTable
GROUP BY [source], [sink]

The IterationStep is given by

INSERT INTO IterationTable
SELECT IterationTable.source AS source, Relations.sink AS sink,
IterationTable.distance+Relations.weight AS distance
FROM IterationTable INNER JOIN Relations ON
IterationTable.sink=Relations.source

The deletion of redundant rows is very, very important for performance. Redundant are rows where there is already a shorter path in the data set.
You may also consider table maintenance operations of your dbms as intermediate steps to boost performance. For example, in postgresql you may vacuum the table. Thereby it is cleaned up and the table statistics are recalculated for faster access to a particular row.
The following view ConnectedTo can be used to check, whether Distances is changing:

SELECT source, COUNT(*) AS numreachable FROM Distances GROUP BY source

For undirected graphs we can state that within one connected component all belonging nodes will have the same value numreachable, namely the cardinality of the connected component. For directed graphs you have to compare row by row (computers are good at this task).
Let us assume that we have an undirected graph. Then the next step is the identification of the different connected components. This can be done by checking the view ConnectedTo for differing numbers. It is not very likely that there are two distinct connected components with exactly the same number of nodes. However, you can check by a simple SQL-Query whether there are two nodes with the same number that are not connected - just to be sure. The indicator "degrees of separation" is only meaningful within a single connected component. So you have to compute the degrees of separation for each connected component independently.
Assuming that there is just one connected component (all fragments are removed) now the following query has to be executed:

SELECT AVG(mindistance) AS DegreesOfSeparation
FROM Distances

And you are done.
You can get the diameter by using the SQL MAX aggregation operator and the best reachable person by grouping the previous query by source.
The sole problem of my pretty naïve approach is its scalability. There are very good algorithms to solve the shortest path problem between two nodes, however I am not aware of an efficient algorithm that computes the shortest paths between each pair of nodes within the network at once. And up to now I am also not aware of an efficient heuristic approach for the computation of the degrees of separation (please comment if you know). Please do not expect the described algorithm to work for large data sets. The art is probably to find useful intermediate steps to simplify the IterationTable. The more rows you can remove the better. For example, for the Go-network I have always removed the links where neither source nor sink were signed up to the survey. The Go-network consisted of nearly 800 direct links, 120 nodes (signed-up) and nearly 400 external nodes. The algorithm worked, however the intermediate table consisted of more than half a million rows before simplification.

Montag, August 21, 2006

Sonstiges: Die armen Viagraverkäufer

Ich bin so froh, dass ich kein Viagra verkaufe. Wüsste gar nicht, wie ich meinen Spamfilter am besten konfigurieren sollte...

Sonntag, August 20, 2006

Sonstiges: Never touch a running system

Ich dachte immer, dass es nur mir so ginge, dass so gut wie immer irgendetwas am Rechner nicht funktioniert. Und so bin ich heute dann doch erleichtert gewesen, als mir ein Kumpel, auch Dipl.-Inf. seines Zeichens, erzählt hat, dass sein Rechner auch macht, was er will. Er wollte wohl Linux neben Windows laufen lassen, hatte dann ewig kein Netz und jetzt, wo er Netz hat, läuft Windows nicht mehr...

Den Spruch "Never touch a running system" kennt wohl jeder. Ich hoffe, ich komme mal irgendwann in die Situation, wo alles auf meinem Rechner läuft. Dann würde ich es auch nie wieder anfassen :-)

Freitag, August 18, 2006

DB,SNA: Self JOIN

Mit dem Begriff Self JOIN ist ein JOIN einer Tabelle mit sich selbst gemeint. So könnte man zum Beispiel mit einem Self JOIN auf einer Angestellten-Tabelle mit den Attributen ID, Name, ..., ChefID zu jedem Angestellten den Namen seines Chefes mit ausgeben lassen. Und für die SNA-Praxis kann man aus einer Beziehungen-Tabelle durch einen n-fachen Self JOIN alle Pfade der Länge n+2 berechnen (Kreise im Netzwerk verderben etwas die Qualität dieses simplen Ansatzes). Übrigens ist es mit reinem SQL nicht möglich, eine transitive Hülle zu berechnen. Dies ist zwar eine echte Schwäche des relationalen Ansatzes, allerdings kein Beinbruch, da moderne DBMS eingebaute Programmiersprachen vorhalten.

Sonstiges: Schnelllebigkeit der Informatik

Ich habe die Tage mein Büro aufgeräumt. Die Personalrotation ist bei uns sehr hoch, d.h. immer wenn der Dienstposteninhaber gerade einigermaßen eingearbeitet ist, kommt schon bald der nächste. Und so ist es nicht verwunderlich, dass es haufenweise alte Ordner in den Schränken gibt. Denn womit man sich nicht auskennt, das getraut man sich auch nicht wegzuschmeißen.
Der Vorteil ist allerdings, dass so einige Raritäten und Antiquitäten in den unteren Schubfächern der Schränke schlummern. So habe ich zum Beispiel den Ausdruck eines alten Batchjobs gefunden, ungefähr 60 Seiten Endlospapier. Ich konnte nicht einmal mehr die Programmiersprache mit Sicherheit identifizieren, vermutlich aber PL/1. An solchen Dingen wird einem erst mal wieder bewusst, welche sagenhaften Sprünge die Informatik in den vergangenen zehn Jahren gemacht hat.
Desweiteren habe ich ein uraltes IT-Sicherheitskonzept gefunden. Es stammt aus dem Jahr 1991. Da konnte noch jeder PC extra aufgelistet werden...

Die 4 PC für allgemeine Büroarbeiten stehen gemeinsam im Raum 13 (EG). Die Fenster sind vergittert, die Tür besitzt ein Sicherheitsschloss.

Wirklich faszinierend ist allerdings, dass die "Richtlinien zum Schutz vor Computeranomalien" im Großen und Ganzen heute noch genauso gültig wären wie damals. Die Maßnahmen haben sich kaum geändert. Es sind zwar einige neue Bedrohungsformen hinzugekommen, befolgt man aber die allgemeinen Benimm-Regeln im Umgang mit Computern, so hat man schon einen ziemlich guten Basisschutz.

Was wirklich schade ist: die alten Sachen dürfen nicht in einem Museum ausgestellt werden, sondern müssen leider vernichtet werden :-( Da blutet das Herz.

Donnerstag, August 17, 2006

Sonstiges: Internetbetrug

Heute habe ich einen Anruf bekommen, der mich doch nachdenklich gemacht hat. Ein Mann schilderte mir aufgebracht, dass er von mir über eBay einen bestimmten Artikel ersteigert und ich ihm diesen immer noch nicht geschickt hätte. Er war wirklich richtig sauer und drohte mit Anzeige bei der Polizei. Er nannte sogar meine Adresse. Dann hat er vorgeschlagen, dass wir die Sache ja unter uns klären könnten... Ich muss dazu sagen, dass ich kein großer eBay-Händler bin. Deshalb habe ich ihm angeboten, dass ich in mein Profil schaue und ihn, wenn es tatsächlich einen Missbrauch gab, zurückrufe. Er hat nochmal ein bisschen geschimpft und auf eine schnelle Regelung gedrängt, aber ich habe ihn dann abgewürgt. Mein Profil bei eBay war natürlich völlig i.O. und meine Adresse hatte er wahrscheinlich von meiner Webseite.
Ich leite aus diesem Erlebnis also zwei Erkenntnisse ab: Einerseits, das versteht sich eigentlich von selbst, sollte man sich, wenn man ein reines Gewissen hat, nicht auf irgendwelche Deals einlassen - schon gar nicht, wenn man die Behauptungen nicht sofort nachprüfen kann. Andererseits ist mir wieder einmal bewusst geworden, dass man ein permanentes Ziel von Betrügereien ist, sobald man im Internet irgendwo persönliche Daten einstellt (und wenn es nur das Impressum der eigenen Webseite ist).
Also: Aufgepasst!

Verwandte Beiträge aus meinem Blog:

Dienstag, August 15, 2006

Sonstiges: Beschwerdemanagement

Kürzlich berichtete ich über meine negativen Erfahrungen mit dem Beschwerdemanagement von Schlecker.

Und gerade heute habe ich von einer Umfrage über eben dieses Problem in der Computerzeitung gelesen. Durchführende Firma war Materna. Ok, es ist, soweit ich das aus dem Artikel heraus beurteilen kann, nichts großartig Neues dabei herausgekommen: Man soll professionell mit Beschwerden umgehen und die Ursache des Beschwers ergründen und beseitigen. Interessant ist allerdings der geschilderte Beschwerdeprozess:


  1. Annahme (Aufnehmen der Beschwerde)

  2. Bearbeitung (Lösungen für die Beschwerden finden)

  3. Reaktion (Die Lösung mit dem Kunden vereinbaren)

  4. Auswertung (Beschwerden und Wünsche der Kunden verstehen)

  5. Qualitätsverbesserung (Schwachstellen erkennen und beseitigen)

  6. Controlling (Planung und Steuerung des Beschwerdemanagement-Prozesses)



Im konkreten Fall Schlecker (ja, ja, ich habe mich jetzt ein bisschen eingeschossen) wurde nicht versucht mein Problem zu lösen (z.B. indem ein Fachmann wenigstens versucht, meine verlorene Auswahl zu rekonstruieren), sondern ich wurde auf eine Alternative vertröstet, die es für mich nicht tut. Mein Beschwer wurde auch nicht korrekt verstanden (wie in drei Teufels Namen sind die darauf gekommen, dass es sich um ein Problem mit dem Mac handeln könnte?). Ob die Schwachstelle wenigstens beseitigt wird, werde ich später noch mal testen.

DB: Von Drehstuhlschnittstellen und Tippaffen

Jeder, der sich mit Datenbankdesign und Softwareentwicklung beschäftigt, sollte mindestens einmal in seinem Leben als Drehstuhlschnittstelle gearbeitet haben. Was das ist? Als Drehstuhlschnittstelle bezeichnet man gemeinhin die arme Sau, die die Daten aus einem DV-System manuell in ein anderes schaufeln darf, weil die Systeme nicht miteinander reden können (oder dürfen). Und warum sollte das jeder Datenbankdesigner mal gemacht haben? Genau: Lernen durch Schmerzen! Wo die Daten herkommen und wo sie weiterverarbeitet werden, sollte man sich eben vorher überlegen. Und keiner soll mir erzählen, dass durch sorgfältige Planung nicht ein Datenaustausch in irgendeiner Art gewährleistet werden könnte. Das spart Arbeitszeit und reduziert Fehler. Wenn Sie sich jetzt fragen, wie zum Geier ich darauf komme und was um alles in der Welt das mit Tippaffen zu tun hat, so kann ich nur sagen: Heute war ich erstere und habe mich als letzterer dabei gefühlt.

Montag, August 14, 2006

DB: SchemaSpy makes me high

What a great application! If you are one of those who use Microsoft Access because of its nice table relations visualization facilities I can strongly suggest SchemaSpy. It converts a nearly arbitrary database to its visual representation (this is the wrong direction of database design, however, sometimes you just want to get into something reverse engineering like). You have to have appropriate rights and the jdbc driver of your dbms at hand.

Donnerstag, August 10, 2006

Sonstiges: Krieg der Bildbearbeitung - mein Senf

Die Lage: Krieg der Bildbearbeitung, ein Fotograph manipuliert Bilder des Krieges im Nahen Osten, um sie sensationeller wirken zu lassen.
Mein Problem damit: Warum bringen die Leute das automatisch mit Photoshop in Verbindung, könnte doch genausogut auch mit GIMP gemacht worden sein, oder?

WWW: Fehler in Webanwendung? Halb so wild!

So zumindest die Reaktion vom Schlecker Foto-Service auf meine folgende Beschwerdemail:


Sehr geehrte Damen und Herren,

habe am 06.08. eine Fotobestellung zusammengestellt. Dazu hatte ich über 80 Fotos aus verschiedenen Ordnern rausgesucht. Als ich beim letzten Schritt angekommen war, ist mir eingefallen, dass ich ein Foto vergessen hatte. Also habe ich auf hinzufügen geklickt. Leider und unintuitiver Weise war dadurch auf einmal meine Auswahl weg. Sie können sich vorstellen, wie viel Spaß es macht, die 80 Fotos über ihr Interface nochmal hochzuladen.

Mit freundlichen Grüßen, aber etwas genervt,

Steffen Mazanek


Und Kernsatz der Reaktion:


Es tut mir leid, dass Sie die Bestellung erneut eingeben mussten. Versuchen Sie es doch sonst mit unserer kostenlosen Bestellsoftware, bei dieser können Sie einfach und sehr übersichtlich die Bestellungen auch von großen Mengen vor der Übertragung eingebene.


Ich habe in meiner Antwortmail dann erklärt, dass ich kein Windows auf meinem Rechner installiert habe und selbst der Windowsemulator wine nicht in der Lage war, das über 20Mb(!!) große Schlecker-Bildhochladprogramm zu starten. Ich habe weiterhin darum gebeten, sich doch einmal die Konkurrenz anzuschauen, z.B. dm digifoto, die das Hochladen über Web doch sehr viel komfortabler gestalten.

Darf ich denn von einer Webanwendung als Kunde nicht auch erwarten, dass sie funktioniert und mir keine unnötige Arbeit macht? Ich habe die Bilder natürlich nicht noch einmal bei Schlecker hochgeladen...

Sonstiges: Murphys Gesetz

Wir hatten heute, 9:00 Uhr, einen Vortrag, in dem wir den zukünftigen Nutzern das warum und wie der Befüllung unserer Datenbank vorgetragen haben. 8:15 Uhr waren wir mit unserem Notebook im Vortragsraum. Wir hatten uns am Vortag erkundigt, ob vom Vortragsraum aus Zugriff zum Intranet gewährleistet wäre und es hieß, dass ja. Wir stöpselten also unser Notebook an und erlebten die erste böse Überraschung, dass es nämlich doch nicht so einfach war, wie man es uns versprochen hatte. Mit Hilfe eines Admins haben wir es dann doch hinbekommen. Es war inzwischen 8:45 Uhr. Beim Starten der Anwendung dann die nächste Überraschung: Das Notebook konnte Access nicht mehr starten. Angeblich ein Speicherfehler. Eine Stunde vorher hatte alles noch ganz normal funktioniert, nun ging also nichts mehr. Selbst ein Reboot hat nichts geholfen.
Es war inzwischen 8:50 und die ersten übereifrigen Teilnehmer waren schon da. Wir wollten schnell ein Ersatznotebook ausborgen, allerdings waren diese wohl nicht für den Betrieb im Netz konfiguriert. Blieb nur eine letzte Möglichkeit. Ich habe in einer Hauruck-Aktion einen stationären Arbeitsplatz-PC ab- und im Vortragsraum wieder aufgebaut. Inzwischen hatte mein Kollege schon mit der Einweisung begonnen und mit einem lustigen Spruch die Anspannung weitestgehend gelöst. Danach lief alles wie am Schnürchen. Später haben wir uns das Notebook noch mal angeschaut und – es ist der blanke Hohn – es tat seinen Dienst wie gewohnt.

Was wir daraus lernen? Keine Ahnung. Wir können ja nicht schon zwei Stunden vorher im Vortragsraum sitzen. Nein, ich hab’s. Outsourcen! Technik ist zu störanfällig, als das es ratsam wäre, dafür die Verantwortung selbst zu übernehmen. Das muss einfach delegiert werden! Und: Murphy lebt.

Montag, August 07, 2006

Sonstiges: Handy Least Cost Routing

Dieser Blog ist ja bekannt für die verrückten Ideen, die hier öfter mal geäußert werden. Hier die neueste, mir kürzlich unter der Dusche eingefallene, "Innovation" :-)

Folgende hypothetische Situation: Ich habe einen Handytarif, mit dem ich für x ct die Minute einen bestimmten Kumpel anrufen kann. Dieser hat einen Tarif, mit dem er sehr günstig, sagen wir für y ct ins Festnetz telefonieren kann. Ist es irgendwie möglich, dass ich mich bei Festnetzgesprächen über ihn leiten lasse ohne dass er dabei aktiv etwas machen muss? Günstiger wäre es, weil x+y immer noch kleiner ist als das, was ich für ein Festnetzgespräch normalerweise berappen muss. Geht so was? Klar müssten dafür eine Liste der berechtigten Tel.nr. eingegeben werden. Und auch klar, dass er während der Zeit kein eigenes Gespräch führen dürfte. Ich hab das heute mal mit einem Kumpel diskutiert, der sich mit Handyprogrammierung ein bisschen auskennt, und der meinte, dass es nicht einmal durch aktives Schalten einer Konferenzschaltung funktioniert, da diese Services in der Regel der Provider steuert. Der Kern des Problems ist also, ob man ein Handy-Gespräch verbatim "durchstellen" kann. Bitte um Info!

Solche Ideen kommen mir definitiv nur deswegen, weil ich keinen Fernseher habe. Habe es heute erst gelesen: 21 ways to be more creative! Fernsehen ist der top Kreativitätskiller steht da, wusste ich aber eigentlich schon länger :-)

Freitag, August 04, 2006

WWW: Hetze im Blog - nein Danke

Ich habe heute einen interessanten Artikel in der Presseauswertung entdeckt, den ich euch nicht vorenthalten möchte. Hunderttausend Zeilen Hass heißt der Bericht aus dem Tagesspiegel. Es wird der Vorwurf erhoben, dass die Umgangsformen im Netz rüder sind. Konkret heißt es:

Im anonymen Netz sucht man Vernunft, Zurückhaltung und selbst rudimentäre Umgangsformen der realen Welt oftmals vergeblich.

Anlass ist der teilweise wirklich die Grenze des guten Geschmacks überschreitende Disput über den Nahost-Konflikt in Blogs und Foren.

Fakt ist: das Internet macht die Welt kleiner, d.h. Streithähne finden sich viel leichter und haben auch direkt eine Plattform für ihren Schlagabtausch und leider auch für ihre Hetze. Deswegen hinkt in meinen Augen der Vergleich mit den traditionellen Medien. Andererseits hat die Offenheit auch viele Vorteile. Wieviele Skandale sind schon von Bloggern aufgedeckt worden? Oder wo sonst kann der Kampf David gegen Goliath so einfach geführt werden (ich sage nur BILDblog). Ich denke, dass zukünftig mehr Wert auf die Selbstreinigungskraft des Internets gelegt werden sollte. Das passiert ja auch schon und funktioniert auch gut, z.B. bei YouTube. So sollte Die Zeit nicht einfach die Kommentarfunktion bei polarisierenden Artikeln unterdrücken, sondern den Lesern die Möglichkeit geben, unsachliche Kommentare durch ein schlechtes Rating ans Ende der Liste zu wählen oder gar per einfachem Klick den Kommentar als inakzeptabel aufzuzeigen, damit der Redakteur entsprechende Maßnahmen treffen kann.

Ich für meinen Teil bleibe in diesem Blog unpolitisch, Ehrenwort. Und dass ich manchmal Hetze über bestimmte Praktiken im Informatikeralltag verbreite, bitte ich zu entschuldigen :-)

Sonstiges: Fellow Toastmasters

Gestern waren wir zu Gast bei den Rheinrednern, einem von zwei Toastmasters-Clubs in Köln. Wir wollten eigentlich bloß mal gucken, aber da wegen der Sommerferien nur 8 Leute (uns inklusive) teilnehmen konnten, gab es kein Verstecken. Erschwerend kam hinzu, dass der erste Donnerstag im Monat bei den Rheinrednern immer als English-Meeting genutzt wird - soll heißen: Es darf kein Deutsch gesprochen werden.
Doch hatte diese Blutsturzmethode den entscheidenden Vorteil, dass wir eben mittendrin statt nur dabei waren und alles hautnah miterleben durften.
Der Ablauf ist von der Organisation Toastmasters relativ starr festgelegt:

  • Zuerst wird der Toastmaster des Abends festgelegt. Er führt durch das Programm und moderiert.

  • Danach wird das Wort des Abends festgelegt. In den Reden soll man versuchen, das Wort des Abends (gestern war es flexible) möglichst häufig sinnvoll zu verwenden.

  • Witz des Abends gegen die Nervosität

  • Festlegung von Rollen, z.B. Füllwortzähler, Zeitnehmer, Table Topic Moderatoren usw.

  • Vorbereitete Reden

  • Stegreifreden (Table Topics)

  • Evaluationsteil

  • Abschluss mit Preisverleihung und Feedback

  • Das Kölsch danach.


Mein Fazit: Einfach mal ausprobieren! Es macht Spaß, die Leute helfen sich gegenseitig, dass man bei einer Rede vor Anderen mehr als nur ein Äh rausbringt, niemand wird bei Fehlern ausgelacht und Gäste sind absolut willkommen. Wir werden bestimmt wieder mal hingehen. Das Einzige, was mich etwas gestört hat (das liegt aber in der Natur der Sache), ist, dass der Inhalt nur Zweite Geige spielt. Diskussionen sind eigentlich nicht gewollt. Wer diskutieren will, sollte einen Debattierclub besuchen.

Dienstag, August 01, 2006

DB: Datenbereinigung

Bei meiner Go-Umfrage lasse ich die angemeldeten Spieler die Leute eingeben, zu denen sie in bestimmten Beziehungen stehen. Dies passiert über die Eingabe von Vorname+Name.
Eine Dropdown-Liste gibt es bei der Eingabe nicht, weil ich wollte, dass auch nicht angemeldete Spieler angegeben werden können. Eine Dropdown-Liste hätte da einen systematischen Fehler reingebracht, weil aus Gründen der Bequemlichkeit eher Leute aus der Liste eingegeben worden wären. Möglich und für die Datenqualität von Vorteil wäre wahrscheinlich ein Vorschlags-Mechanismus gewesen (ähnlich Google Suggest). Ich wollte jedoch schnell zum Ziel kommen und habe deshalb darauf verzichtet, etwas derartiges zu implementieren (außerdem verfüge ich noch nicht über AJAX-Kenntnisse).

Doch nun zum Punkt: In die Datenbank haben sich durch diese Vorgehensweise etliche Fehler eingeschlichen. Vom schlichten Rechtschreibfehler (Andeas statt Andreas) bis zum beabsichtigten(?) Fehler (Spitzname statt Vorname) und verschiedenen Schreibweisen(?) von Umlauten (oe/ö/ö) war alles dabei. Bei ca. 800 Beziehungen (und das ist noch eine relativ kleine Anzahl) ist eine manuelle Korrektur so gut wie unmöglich (das menschliche Auge ist beispielsweise nicht so gut darin, vergessene Buchstaben zu bemerken, was ja auch so seine Vorteile hat).
Ich habe mich also für folgenden Weg der Datenbereinigung entschieden: Ich lasse mir alle Beziehungen anzeigen, bei denen die Zielperson (Vorname+Name) nicht in der Nutzertabelle vorkommt, aber einem bestimmten Nutzer in Vorname und Name jeweils zu mindestens 75% (habe auch die 60%-Liste durchgeschaut, allerdings waren da keine weiteren relevanten Treffer dabei) ähnlich ist. Hierbei vertraue ich auf den intelligenten Ähnlichkeitsalgorithmus der php-Funktion similar_text, die auch mit Zeichenauslassungsfehlern gut umgehen kann (zeichenweiser Vergleich der Wörter ist einfach nicht praktikabel, weil aus einem am Anfang des Wortes vergessenem Buchstaben eine katastrophale Ähnlichkeit resultiert). Andere Programmiersprachen bieten bestimmt ähnliche Funktionen, aber ich war einfach froh, schnell was gefunden gehabt zu haben.

Hier ein paar Beispiele:









Beispiele der Anwendung von similar_text
Wort1Wort2Anz Übereinstimmungen% Übereinstimmung
HalloHalo488.8888888889
HalloHallo5100
HaxxoHallo360
AndreasAndeas692.3076923077
ZötzscheZoetsche675
ManuelaManja466.6666666667


Klar hat die gewählte automatisierte Vorgehensweise den Nachteil, dass Beziehungen zu Leuten, die sich nicht angemeldet haben, nicht überprüft werden. Das habe ich aber in Kauf genommen, weil diese Leute bei der Analyse auch nicht so eine bedeutende Rolle spielen.