Blog

Kommentare gehen wieder

Ich habe mich jetzt endlich daran gemacht, den schon lange versprochenen Spam-Filter zu schreiben, was erstaunlich einfach ging. Daher könnt ihr jetzt wieder Kommentare schreiben.

Der Filter ist ein sogenannter naiver Bayes-Spamfilter, der die Wahrscheinlichkeit berechnet, dass ein Eintrag Spam ist, basierend darauf wie oft ein Wort in Spam- und Nichtspam-Kommentaren gesehen wurde. Die Implementierung folgt dabei ziemlich exakt dem englischen Wikipedia-Artikel, ohne weitere Heuristiken für seltene Wörter oder anderes.

Falls es jemanden interessiert, ich kann gerne den Code hochladen, es ist erstaunlich wenig. Der wichtigste Einzelpunkt, der mir aufgefallen ist: Der Spam-Filter spielt leicht verrückt wenn ein Wort entweder als Spam oder als “erlaubtes” Wort nie gesehen wurde. Um dies zu vermeiden, wird bei jedem neuen Wort erst mal eine Sichtung sowohl als Spam als auch als nicht-Spam eingetragen, bevor die echten Sichtungen beginnen. Natürlich verfälscht das Ergebnis etwas, aber nicht genug um echt zu stören.

In der jetzigen Form hat der Filter drei Stufen. Kommentare deren Spam-Wahrscheinlichkeit über 95% liegt werden gar nicht erst in die Datenbank geschrieben, sondernd sofort abgelehnt. Kommentare mit einer Spam-Wahrscheinlichkeit von 70% werden eingetragen, aber erst angezeigt sobald ich entschieden habe dass sie kein Spam sind. Diese Entscheidung trainiert den Spam-Filter weiter, so dass er in Zukunft immer genauer werden sollte. Natürlich kann es sein dass ich beide Grenzen noch anpassen muss.

Neues Auto

Eigentlich wollte ich wegen deswegen keinen neuen Blogpost machen, aber Björn sagte, dass ich sollte. Daher hier: Mein neues Auto!

Ein grauer dreitägiger Kompatkwagen

Der Hintergrund ist, dass mein vorheriges Auto in einem relativ kleinen Unfall1 einen Totalschaden erlitt. Das machte mich traurig, aber der neue Wagen lenkt sehr gut davon ab. Es ist ein Alfa Romeo 147, Baujahr 2004, mit dem 2.0 Liter TwinSpark-Motor (150 PS), normalem Getriebe und Extras wie Lederausstattung, Tieferlegung, Schiebedach, ESP, ASR und vielen anderen, die ich technisch nicht gesehen nicht brauche, aber doch sehr gerne habe.

Das Auto braucht ein neues Radio, da das jetzige keinen Eingang für iPods hat (Ich verwende einen Radiotransmitter, aber das ist nicht wirklich ideal). In allen anderen Bereichen ist das Auto einfach nur toll.


  1. Niemand verletzt. Der Unfall war auch nicht meine Schuld, ich war nicht mal im Auto als es passierte. Bei diesem Auto werde ich jetzt doch vorsichtiger sein, wenn ich es verleihe. 

Spambekämpfung

Bisher habe ich Kommentarspam auf dieser Seite immer durch eine einfache Blacklist bekämpft, auf der verbotene Wörter standen. Das funktionierte auch ganz gut. Derzeit aber kämpfe ich mit einem Spambot, der zwar immer sehr ähnliche Posts erzeugt, aber dabei ein erstaunlich breites Repertoire verschiedenster Ausdrücke verwendet und so immer wieder durch den Filter rutscht.

Daher habe ich mich entschieden, einen etwas intelligenteren Spamfilter, der automatisch lernen kann, zu schreiben, so wie ihn auch viele E-mail-Programme heute haben. Das ist nicht so schwierig wie es klingt, da es auch entsprechende Tutorials gibt. Um diesen aber zu trainieren brauche ich Trainingsdaten, das heißt echten nervigen Spam.

Um an diese zu kommen habe ich jetzt erst mal den alten Spamfilter komplett deaktiviert. Damit aber kein Mist auf dieser Seite erscheint werden keine neuen Kommentare mehr angezeigt. Sie werden zwar gespeichert, aber erscheinen nie. Wie lange ich das machen muss weiß ich nicht (unter Umständen hört der Spambot auch auf wenn er sieht dass seine Posts nicht erscheinen, weil er denkt die Seite sei kaputt), also vorerst bitte nicht wundern wenn keine neuen Kommentare erscheinen!

Nebenbei: Ich habe hier in letzter Zeit keine Bahnbilder gepostet. Das liegt vor allem daran, dass ich diesen Teil der Seite gewaltig umgestalten will. Derzeit sind alle meine neuen Eisenbahnfotos nur unter http://zcochrane.deviantart.com/gallery/ verfügbar, aber ich plane sie dann später auch hier zu posten.

Sensoren

Zuerst einmal: Eine PDF-Version der Folien von meinem Vortrag am 27. März 2010 ist jetzt endlich online. Der Film drin läuft in der PDF nicht, aber das ist eh nur dass, was im letzten Blogeintrag zu dem Thema auch schon drin war, minus dem “echt” Teil, weil das einfach zu schlecht für eine Vorführung mit Beamter aussah.

Nun zum aktuellen Stand. Es gibt eine Reihe von offiziellen Zwischenschritten, die auch auf der vorletzten Folie der PDF-Datei erwähnt werden, aber für mindestens genauso wichtig halte ich die informellen Meilensteine. Einen der wichtigsten davon hat der Simulator gerade geknackt: Es macht mir persönlich Spaß, damit zu spielen. Dieser Meilenstein ist für mich sehr wichtig, denn “das stört mich” ist weit präziser und hilfreicher als Aussage “theoretisch könnte man das auch so machen”, und man erhält die erste Art Aussage nur durch rumspielen.

Entscheidend dafür war es, Sensoren zu implementieren, was nun geschehen ist. Hier mal ein kurzer Überblick:

Im ersten Teil folgt der Roboter der schwarzen Linie, in dem er geradeaus fährt so lange der Lichtsensor (der hier nach unten gerichtet ist, man kann ihn auch geradeaus richten) schwarz sieht und sich nach links dreht wenn der Lichtsensor weiß sieht. Im zweiten Teil fährt der Roboter geradeaus bis er gegen eine Wand stößt, dann setzt er zurück und dreht sich von der Wand weg. Im letzten Teil schließlich versucht der Roboter einen konstanten Abstand bis zu einem Hindernis vor seinem Ultraschallsensor zu halten.

Alle drei Programme laufen auch auf dem richtigen Roboter. Noch nicht eingebaut ist die Unterstützung für den Sound-Sensor (d.h. das Mikrofon), da noch überhaupt kein Sound drin ist. Auch werde ich nicht den Farbsensor extra einbauen, da es eh nur Graustufen gibt (Meine Idee ist aber, dass der Lichtsensor korrekt reagiert wenn er als Farbsensor im Lichtsensormodus angesprochen wird, was nicht so verrückt ist wie es klingt). Der nächste Schritt ist jetzt, Sound einzubauen.

Bildungsstreik Aachen - April 2010

Heute war mal wieder Bildungsstreik in Aachen. Wie auch letztes Mal war ich wieder dabei um vom Rand Fotos zu machen. Ich würde schätzen dass es weniger Leute waren als letztes Mal, aber sicher kann ich das nicht sagen (es waren doch sehr viele). Hier, mit nur minimalem Kommentar, die Bilder. Draufklicken liefert eine größere Version, falls das wen interessiert.

Eine Menschenmenge auf dem Aachener Theaterplatz, inklusive einiger Polizisten und einiger Schilder mit Aufschriften wie &ldquot;MIt Studiengebühren sanieren wir die Hochschule&rdquot; Am Theaterplatz, bevor es losging. Der WDR Aachen war auch da.

Zwei Personen mit gelben T-Shirts halten ein kleineres Banner mit dem Logo des Bildungsstreiks Mit dem Loslaufen ließ man sich doch etwas Zeit. Die beiden Jungs mit dem Miniplakat hier waren davon offensichtlich etwas genervt und informierten so lange erst mal die Passanten.

Der Protestzug läuft vom Theaterplatz Richtung Elisenbrunnen, angeführt von Leuten die ein gelbes Transparent mit Aufschrift &ldquot;Bundesweiter Bildungsstreik&rdquot; tragen. Sie laufen los, diesmal andersherum, am Elisenbrunnen und dann über den Marktplatz. Das Licht für Fotos war heute deutlich besser als letztes mal.

Verschiedene große Plakette nebeneinander, unter anderem eines dass Revolution fordert und eins mit Aufschrift &ldquot;Zusammen Streiken. Schwänzen. Kämpfen!&rdquot; Viele Transparente wurden vom November wiederverwendet, wie zum Beispiel das pro-Revolution im Hintergrund. Das vordere, dass mich irgendwie sehr an Monty Python erinnert (“We are struggling together!”), ist mir dagegen neu.

Der Protestzug, eskortiert von einem Polizeimotorrad und zwei Polizisten zu Fuß, zieht den Berg hoch zum Marktplatz. Via Elisenbrunnen (alles im Schatten) ging es hoch zum Marktplatz. Auf dem Weg gab es ein paar gute Fotogelegenheiten.

Auf dem Marktplatz setzt sich der gesamte Protestzug kurz hin. Ein andere Fotograf steht im Vordergrund. Schon beim letzten Mal war eine Hinsetzaktion sehr populär, und diese Demo setzt doch viel auf Wiederholung. Der Herr in Schwarz darf mir gerne ins Bild laufen, denn ich erkenne die Autorität der größeren Kamera an, aber dann muss er auch damit rechnen dass er auf meinem Bild ist.

Der Rest war dann relativ uninteressant, aber ich hoffe die Fotos haben so einen kleinen Eindruck von dem Even vermittelt. Ich möchte noch erwähnen, dass ich kein Bildungsstreiker bin oder war, ich war dort nur als interessierter Bürger mit etwas Zeit und einer Kamera.

Bachelorarbeit: Lego Mindstorms simulieren

Lange her, dass ich hier was geschrieben habe, nicht wahr? Na ja, jetzt wird es besser, da ich ein neues Thema gefunden habe: Meine Bachelorarbeit, mit der ich vor kurzem begonnen habe. Hier mal eine kleine Einführung.

Das Thema: Lego Mindstorms Roboter.

Lego sollte ja noch allgemein bekannt sein. Seit einigen Jahren gibt bietet Lego ein System an mit dem man Roboter bauen kann, bekannt als Mindstorms. Die neueste ersinn ist Lego Mindstorms NXT 2.0. Es ist toll und hat auch einen Platz im Informatik-Unterricht gefunden. Insbesondere wird es vom go4IT!-Projekt der Computer Supported Learning Research Group der RWTH Aachen verwendet, um Schulkindern in der 6. und 7. Klasse die Grundzüge des Programmierens in Workshops zu vermitteln.

Das funktioniert wohl auch prima, bis der Workshop vorbei ist. Dann stellt sich das Problem, dass die Mindstorms-Kästen wieder weggenommenwerden, und ein neuer eine unverbindliche Preisempfehlung von 300€ hat. Man kriegt ihn natürlich auch billiger (Ich habe meinem bei Amazon bestellt, mehr weil ich ihn haben wollte als weil ich ihn für diese Arbeit brauchte), aber unter 250€ für einen neuen halte ich für unwahrscheinlich. Das heißt dass die meisten dieser Kinder nicht zu Hause oder in der Schule weiterprogrammieren können. Dort setzt meine Arbeit an.

Ja, die Qualität ist Mist. Meine Kompaktkamera ist wohl gerade in Goslar und meine Spiegelreflexkamera war nicht teuer genug, um Video aufnehmen zu können, weswegen, der “Vorbild”-Teil von meinem iPhone kommt.

Ich entwickle einen Simulator für Lego Mindstorms NXT 2.0 Roboter1. Die Idee ist, dass man sein Programm schreibt und kompiliert wie für den richtigen Roboter. Statt es aber auf das Stück Plastik zu laden, wird es dann vom Simulator auf dem eigenen Windows-Rechner oder Mac ausgeführt. Es wird noch besser: Die fertige Version wird auch Netzwerkunterstützung bieten, so dass meine seine Roboter von verschiedenen Rechnern mit- oder gegeneinander arbeiten lassen kann, wie bei einem Mehrspielerspiel. Das wird wohl der schwierigste Teil, aber sicher nicht unmöglich.

Und bis jetzt funktioniert es gut. Vieles ist noch nicht drin, und es wird auch nie alles unterstützen was das richtige Mindstorms kann (es soll ja nur ein Hilfsmittel für Kinder sein), aber man kann die Landschaft leicht ändern, es gibt funktionierende Kollisionserkennung, einen 3D-Roboter und vor allem können einfache Programme direkt ausgeführt werden.

Ich mag dieses Projekt sehr, denn ich kann so ziemlich alles weiterverwenden, was ich je übers Programmieren gelernt habe. Immerhin ist es in vielen Aspekten ein Computerspiel mit schlechter Grafik, meine persönliche Spezialität. Komische Binärdateiformate, Plattformübergreifende Programmierung mit C++, 3D-Grafik mit OpenGL, Netzwerkspiele, alles drin. Natürlich darf ich keinen alten Code weiterverwenden, aber alte Kenntnisse sind kein Problem, weshalb ich mich sehr freue dies machen zu können. Oh, und ich bin auch ein großer Lego-Fan. Ich werde hier in Zukunft mehr über den Verlauf posten.

Nächsten Dienstag um 10:00 gebe ich einen Startup-Vortrag im Seminarraum des Lehrstuhls, wo ich weitestgehend dies hier erzählen werde, aber mit mehr technischen Details. Ich weiß allerdings nicht, ob Externe da auch erlaubt sind. Ich habe auch ein offizielles Proposal, welches ebenfalls mehr Detail enthält. Der Vollständigkeit halber sei auch noch die Webseite für die Arbeit erwähnt, die aber praktisch keine Informationen enthält, die nicht schon hier oder im Proposal sind.


  1. Nur ein Roboter. Es geht hier nicht darum virtuelle Lego-Modelle zu bauen. 

Aachener Busse

Aachen gestern ist genau das, wofür man das Wort Schneechaos erfunden hat. Plötzlich eintretender starker Schneefall, glatte Straßen und anscheinend damit überforderte Streuwagen machten Verkehr in der Stadt ab dem Nachmittag beinahe völlig unmöglich. Besonders nett war, dass viele Steigungsstrecken blockiert wurden durch Stadtbusse, die nicht mehr von ihren Haltestellen loskamen. Einige davon blieben im Seffenter Weg, an Haltestelle Kastanienweg, liegen. Da sich relativ viele über die Fotos, die ich bei Twitter gepostet hatte, dafür interessiert haben, hier noch mal ein paar schönere Fotos, aufgenommen mit richtiger Kamera und Stativ.

Drei Busse stehen an der Kreuzung, zwei davon eingeknickt.

Ich weiß nicht genau wie weit die Anzeigen auf den Bussen stimmen. Normalerweise fährt hier kein 33, aber ein paar Busse scheinen wegen Schnee umgeleitet worden zu sein. Falls das hier der Fall war, ging das gehörig in die Hose, denn weder der 33 noch der (schwer sichtbare) 3B dahinter kamen los. Das schöne an einem Gelenkbus ist, dass er bei so was sofort einknickt und die Straße blockiert. Der 3A rechts versuchte anscheinend vorbei zu kommen, in dem er über den Grünstreifen rechts fuhr, womit er auch liegen blieb.

Am Fußgängerüberweg parkt ein 3A, mit einem weiteren dahinter mit Warnblinkanlage.

Während Autos noch durchkamen, war für Busse jetzt alles zu spät, was immerhin zweie nicht rechtzeitig erfuhren, so dass diese warten mussten bis alles aufgelöst war. Hier in der Gegend wenden ist für einen Gelenkbus natürlich keine echte Option.

Ein Abschleppwagen steht vor einem Bus mit offener Bugklappe. Mehrere Leute stehen drumherum.

Die ASEAG (der Aachener Busbetreiber) hat einen eigenen Abschleppwagen, wohl auch für so was, aber den Meldungen aus dem Rest der Stadt zufolge hatte der mehr als genug zu tun, und es waren sicher mehr als zwei Stunden bevor er kam. Hier hat er gerade den ersten Bus (den 33er) befreit, und will jetzt den zweiten wegziehen, wozu gerade die Zugstange angekuppelt wird.

Und er zieht den Bus weg.

Obwohl ein extra mitgebrachter Streuwagen noch extra die Straße für den Abschleppwagen streute, drehte besonders die Hinterachse doch ziemlich durch. Aber am Ende kriegte er den Bus doch weggeschleppt, bis dahin wo er wieder alleine loskam.

Der Abschleppwagen steht vor einem anderen Bus, während noch einer daran vorbeifährt

Damit war nur noch der Bus im Graben dran, was ohne weitere Probleme ging. Währenddessen konnten die parkenden Busse schon abfahren.

Gerüchten zufolge haben die Busse der ASEAG nur Sommerreifen drauf. Ob das bei schweren Bussen überhaupt so einen Unterschied macht weiß ich nicht, aber wenn es Möglichkeiten gibt, den Grip zu verbessern, sollte die ASEAG wirklich mal darüber nachdenken.