Der Wahl-O-Man lebt!

Heute nun kommt das womöglich am längsten andauernde Softwareprojekt meiner noch relativ jungen Entwicklerkarriere zu seinem glorreichen Ende und wird auf die Öffentlichkeit losgelassen: Der Wahl-O-Man.

Wahl-O-Man

Gezeichnet hat diesen jungen Herrn übrigens Valerie Esch.

 Worum geht es?

Natürlich geht es wieder um die Wahl zum XXXVI. Studierenenparlament der Uni Bonn. Bereits am 10. Juli 2013 wurde im SP ein Antrag verabschiedet, der die akut mit… nun ja, der Entwicklung eines Konzepts, das in einem Antrag münden… Also letztendlich wussten die Parlamentarier nicht, wen sie überhaupt womit genau beauftragen wollten. Am Ende jedoch, das stand fest, sollte ein dem Wahl-O-Mat der bpb ähnliches Teil stehen, mit dem man sich seine Lieblings-Liste zur Wahl auswürfeln lassen kann.

Die akut übernahm die ganze Sache dann.

Inhaltlich wurde das Projekt von einer Arbeitsgruppe innerhalb der akut-Redaktion vorangetrieben, Thesen wurden gesammelt (auch von den zur Wahl antretenden Listen), sprachlich schön geschliffen, dann den Listen zugeleitet und ausgewertet. Diese Arbeitsgruppe hat sich auch den wohlklingenden Namen ausgedacht.

Die technische Umsetzung des Wahl-O-Man hingegen habe ich an mich gerissen übernommen, weil es mich gereizt hat. Woraus baut man einen Wahl-O-Man?

Bootstrap

Bootstrap ist ein von Twitter entwickeltes Framework, mit dem man sich halbwegs hübsche Webseiten quasi zusammenstöpseln kann. Das ganze besteht aus wenig HTML, viel CSS, und falls man noch Effekthascherei dazu haben will (au ja!) etwas JavaScript. Der Wahl-O-Man verwendet noch Bootstrap 2.3.2, wie es bereits beim Liveticker der Fall war. Ich konnte sogar teilweise Teile des Tickers recyceln, was sehr hilfreich war.

PHP-Internals

Hübsche Einzelseiten alleine machen noch keinen Wahl-O-Man. Das eigentliche Programm ist in PHP geschrieben, wie auch schon der Liveticker. Code reuse gab’s auch hier. Eine Datenbank wird für den Wahl-O-Man allerdings nicht benötigt.

Die einzelnen Antworten und Gewichtungen des Benutzers werden in PHP-Session-Variablen gespeichert und am Ende mit den vorgegebenen Antwortvektoren der Listen verglichen – wie die Punktzahl im Detail berechnet wird, habe ich bereits in einem älteren Artikel beschrieben. Die Interaktion mit dem Benutzer ist größtenteils eine reine GET-POST-Orgie.

Volkszählung

Natürlich möchte man auch wissen, wie viele Personen denn das spannende Listensortierspiel spielen. Hierzu wird in einer internen Variable gespeichert, wie oft eine IP-Adresse den Wahl-O-Man „durchgespielt“ hat. Die IP-Adresse wird dabei nicht direkt gespeichert, sondern nur ein mit der PHP-Funktion crypt erzeugter Hashwert, der mit einem zufälligen String gesalzen wird, der täglich durch einen neuen ersetzt wird. Somit sollten sich aus den Statistikdaten nicht einmal mehr die IP-Adressen der Besucher rekonstruieren lassen1. In der Auswertung bekommt man pro Tag angezeigt, wie viele Adressen den Wahl-O-Man aufgerufen haben und wie oft er insgesamt aufgerufen wurde.

OpenGraph

Wir sind hip, wir sind cool, wir wollen auch ordentlich auf Facebook geteilt werden können. Dazu habe ich heute noch OpenGraph-Metadaten in die Startseite eingebaut. Das Problem mit Facebook ist allerdings, dass es eine einmal eingegebene URL im Cache speichert und dann Änderungen an den OG-Tags keine Auswirkungen mehr haben.

Abhilfe schafft hier der „Debugger“ von Facebook, dem man eine URL übergeben kann, die er dann neu lädt und untersucht. Und Holladiewaldfee, es klappt!

2-Klick-Tweet-und-Share-Buttons

Wo ich gerade dabei war wollte ich noch versuchen, Tweet- und Share-Buttons zu integrieren. Allerdings mit 2-Klick-Lösung, wie sie zum Beispiel bei heise.de zum Einsatz kommt. Das entsprechende Heise-Plugin ist allerdings schon zwei Jahre alt, und so funktionierte lediglich der Twitter-Button anstandslos: Beim Aktivieren des Facebook-Buttons wurde zwar etwas nachgeladen, aber das Feld blieb leer. Das Teilen über Google+ schlug stets fehl und eine ganz und gar nicht hilfreiche Hilfeseite öffnete sich.

Etwas Abhilfe konnte ich mit Hilfe des entsprechenden Wordpress-Plugins schaffen: Nach einiger Handarbeit lässt sich nun auch der Facebook-Knopf blicken.

Wo kann man dieses Meisterwerk deutscher Ingenieurskunst nun bewundern?

Haha. Ha. Aber den Wahl-O-Man gibt’s ab sofort, unverzüglich, hier.

  1. Was der Server hingegen so alles von sich aus speichert, weiß ich jetzt spontan nicht.

Taylor Swift

Disclaimer: Eigentlich müsste dieser Text voller Links sein. Da es allerdings Juristen gibt, werde ich lediglich einige Fußnoten einfügen, in denen Sie hilfreiche Schlüsselwörter finden, die Sie in die die Internetsuchmaschine Ihres Vertrauens oder direkt in die Suchfelder von YouTube oder Vevo eingeben können.

Ich habe mir gestern ein Album einer international bekannten Künstlerin gekauft.

album-redVor fünf Jahren schubberte diese junge Künstlerin aus den USA sich in die deutschen Charts. Im Nachhinein betrachtet wundert es mich doch etwas, dass ihr Liebesliedchen „Love Story“ 1 es nur auf Platz 22 der deutschen Charts geschafft hatte – die Mädels um mich herum waren jedenfalls hin und weg und ich dachte mir nur so: Meh.

Vor 11 Monaten dann produziert dieser Mike Tompkins mal wieder ein herrliches Mashup2 und ich so: Hey cool! Moment mal? Taylor Swift? Die olle Schnulzenqueen? Und das ist vom Bieber?!

Hört man sich dann die beiden Lieder einzeln an, fällt auf: „As long as you love me“ von Justin Bieber klingt in der Originalversion grottig3, Taylor Swifts „I knew you were trouble“4 hingegen klingt splendid, wonderful.

Das passiert übrigens öfter, dass man irgend eine Coverversion von einem US-Hit hört und sich denkt „Hey!“5 – und dann klingt das Original wieder komisch, weil plötzlich Nicki Minaj auftaucht und räppt6. Oder man lernt auf einen Schlag zwei Versionen einen Lieds kennen, das bislang hinter der GEMA-Firewall hängen geblieben war7 8.

Aber zurück zu Taylor Swift. Das großartigste an dieser Frau ist ja, dass sie in der englischen Wikipedia einen eigenen Abschnitt „Relationships“ hat. Und natürlich ihr Auftritt bei den BritAwards9 – mit ESC-verdächtigem Trickkleid und extra Dubstep-Einlage in der Mitte.

Bleibt die Frage: Lohnt es sich, wegen drei guter exzellenter Lieder ein ganzes Album zu kaufen?

Klar.

  1. Taylor Swift Love Story
  2. Taylor Swift – Trouble & Justin Bieber – Mike Tompkins A Capella Mashup
  3. Ich beziehe mich hier auf die Originalversion, nicht die Akustikversion
  4. Taylor Swift I Knew You Were Trouble
  5. „Beauty And A Beat“ – Justin Bieber (Alex Goot, Kurt Schneider, and Chrissy Costanza Cover)
  6. Justin Bieber – Beauty And A Beat ft. Nicki Minaj
  7. „Heart Attack“ – Demi Lovato (Sam Tsui & Chrissy Costanza of ATC)
  8. Demi Lovato Heart Attack
  9. Taylor Swift ‚I Knew You Were Trouble‘ I BRITs 2013 I OFFICIAL – HD

Bist du’s? Oder bist du’s nicht?

Der Ältestenrat ist so ein Gremium der verfassten Studierendenschaft, über das man gemeinhin sehr wenig weiß1. Wenn man etwas tiefer in der Materie steckt, dann stolpert man hin und wieder über Sätze wie „Der Ältestenrat hat damals entschieden…“ oder „Was sagt denn der Ältestenrat dazu?“

Wer ist der Ältestenrat eigentlich?

Ein Blick in die Satzung der Studierendenschaft sagt eigentlich alles:

§ 32 Funktion
(1) Der ÄR ist bei allen in seine Zuständigkeit fallenden Angelegenheiten das oberste
streitschlichtende Organ der Studierendenschaft.
(2) Er hat zudem die Aufgabe, die Kontinuität in der studentischen Selbstverwaltung
zu wahren.
(3) Er ist allen übrigen Organen und Gremien der Studierendenschaft gegenüber
unabhängig und selbständig.

§ 33 Zusammensetzung und Wahl
(1) Der ÄR besteht aus neun Studierenden, die sich um die Studierendenschaft
besonders verdient gemacht haben.
(2) Sie werden mit der Mehrheit der SP-Mitglieder gewählt und können nicht
abberufen werden. Eine Wiederwahl ist möglich.
[...]
(5) Mitglieder des ÄR dürfen für kein anderes Organ oder Gremium der studentischen
Selbstverwaltung kandidieren oder ihm angehören.

Kurzum: In den Ältesrenrat setzt das SP Leute, die mal wichtig waren und jetzt Ahnung haben und sonst nix mehr tun. Ihr Wissen stellen sie den aktiven Jungspunden zur Verfügung und schlichten Streitigkeiten, falls nötig.

Warum erzählst du uns das?

Derzeit sind ja Wahlen. Also eher Wahlvorbereitungen. Und ungefähr das zweite, was ich in Zusammenhang mit den Wahlen gelernt habe, ist folgendes:

Eine Liste gilt dann als die selbe Liste wie bei der letzten Wahl, wenn ihr Name exakt identisch ist.

– diverse Ältestenratsmitglieder und weitere wichtige Personen

Warum ist das so? Nun, offenbar habe der Ältestenrat das mal so entschieden.

Nun haben sich zur letzten Wahl und zur aktuellen Wahl diverse Listen mit geänderten Namen beworben. Nach dem was da oben steht müssten diese also als neue Liste behandelt werden. Und die Wahlordnung legt fest, dass auf dem Stimmzettel zunächst die Listen aufgeführt werden, die bereits zur letzten Wahl angetreten sind, und dann folgen die neuen Listen in alphabetischer Reihenfolge.

Bei der letzten Wahl war dies allerdings deshalb unkritisch, da der Wahlausschuss von vor 2 Jahren die Listennamen in der Wahlzeitung und im Endergebnis mal so und mal so geschrieben hat. Es war also nicht möglich, zu überprüfen, ob die Namen identisch zum Vorjahr waren oder nicht. Deshalb wurden damals mit Augenmaß die meisten Listen als diejenigen vom Vorjahr eingestuft. Als Folge dessen wurde allerdings letztes Jahr penibelst darauf geachtet, dass die Listennamen an allen Stellen korrekt notiert wurden.

Zu dieser Wahl ist es also problemlos möglich, herauszufinden, welche Listen (= welche Listennamen) zur letzten Wahl bereits angetreten sind, und das vom Ältestenrat beschlossene Kriterium kann direkt angewandt werden. Die „neuen“ Listen „ghg-campus:grün bonn“, „Liberale Hochschulgruppe an der Uni Bonn (LHG)“ und „Liste Undogmatischer StudentInnen (LUST)“ wanderten deshalb zunächst in alphabetischer Reihenfolge ans Ende der Liste.

Großes Gejammer.

Moment amoal.

Kommen wir nun zur Gretchenfrage: Gibt es diese Beschluss eigentlich und wenn ja, was steht da wirklich drin?

Eine Nachfrage des (aktuellen) Wahlausschusses beim Ältesrenratsvorsitzenden hat ergeben, dass es wohl wirklich einmal einen diesbezüglichen Beschluss gegeben hat. Der Beschluss als solcher wurde noch nicht gefunden, allerdings gibt es Informationen zur Ausgangssituation: Damals™ hat sich wohl eine grüne Hochschulgruppe in zwei grüne Hochschulgruppen aufgespalten. Eine Gruppe hieß dann irgendwas mit GHG und die andere irgendwas mit campusgrün. Und dann ging es um die Frage, wer das tolle Wahlergebnis vom Vorjahr gewinnbringend für die Platzierung auf dem Stimmzettel nutzen durfte. Der diesjährige Wahlausschuss nahm dies zum Anlass, seine Entscheidung über die Listenreihung auf dem Stimmzettel noch einmal zu überdenken und aufgrund der vollkommen anderen Ausgangssituation die Listen trotz abweichender Namen ihren Pendants vom Vorjahr zuzuordnen.

Transparenz!

Der Ältestenrat als Institution hat ein großes Problem. Versucht mal, herauszufinden, wen die aktuellen Mitglieder des Ältestenrats sind.

Genau. Außer einem kleinen Absatz auf einer kleinen Unterseite auf der AStA-Homepage findet sich nichts über dieses Gremium der Weisen im großen Internet. Dabei sind laut Satzung2 alle Organe der Studierendenschaft – und damit auch der Ältestenrat – „verpflichtet, ihre Beschlüsse in geeigneter Form, insbesondere durch Aushang oder auf Informationsblättern sowie an geeigneter Stelle im Internet zu veröffentlichen“. Was passiert, wenn das nicht geschieht, sieht man am aktuellen Beispiel: Man meint, es gebe da irgendwie so einen Beschluss, aber wirklich gesehen hat den letztlich noch niemand.

  1. Gut, das könnte man jetzt über jedes Gremium der Verfassten Studierendenschaft sagen…
  2. Siehe § 4 Satzung der Studierendenschaft