Galerie

KSJ – EventManager

Als Jugendgruppenleiter engagiere ich mich ehrenamtlich und organisierte so mit anderen zusammen das Sommerlager meiner Jugendgruppe mit immerhin über 180 Teilnehmern.
Letztes Jahr kam mir die Idee die dort stattfindenden Arbeitskreise, zwischen welchen die Teilnehmer wählen können automatisch zuzuweisen. Hieraus wuchs dann nach und nach eine komplette Verwaltungssoftware zur Durchführung von Jugendfahrten mit (fast) allem was man dafür benötigt:

  • Checkin-System für Reisebusse
  • Zimmereinteilungssystem
  • Wahlsystem für Arbeitskreise (kurz AK)
  • Tagesprogramm-Planer mit Anzeige für die Teilnehmer
  • Teilnehmer-Datenbank mit Suchfunktion und allen Infos zum Teilnehmer über Wahlen, Kontaktdaten der Eltern etc.

Ich entschied mich für eine Umsetzung mit Node.JS. So konnte ich auf HTML5 und CSS setzen, eine Verfügbarkeit überall garantieren und ohne viel Aufwand mit Websockets eine sehr dynamische Oberfläche schaffen. Außerdem wollte ich schon länger mal etwas Größeres mit Node.JS machen, was ich aber sicherlich nicht nochmals tun werde! Die Asynchronität und das fehlende Multithreading fliegt einem spätestens bei der Berechnung der AK-Wahlen um die Ohren.

Die Teilnehmer-Datenbank

Hier werden kurz gesagt alle Informationen, die das System über einen Teilnehmer hat, zusammengefasst und durchsuchbar dargestellt. Am meisten benötigt wurde es um die Eltern eines Teilnehmers kontaktieren zu können oder sein Zimmer rausfinden zu können.

Diese Diashow benötigt JavaScript.

Das Check-In System für die Reisebusse

Am Abfahrtstag muss möglichst schnell festgestellt werden, dass alle Teilnehmer da sind und vor allem wer in welchem Bus fährt. Den Kindern ist dabei wichtig mit ihren Freunden zusammen fahren zu können. Also machen wir jedes Jahr mehrere Check-Ins (für jeden Reisebus einen) und lassen die Leute sich hier einchecken. Nebenbei werden auch noch andere letzte Formalia geklärt.
Um anschließend nicht x Papierlisten von Hand auf Vollständigkeit prüfen zu müssen, existiert dieses Checkin-System, welches auch über mehrere Computer hinweg immer den aktuellen Füllstand der Busse und fehlenden Personen anzeigt und aktualisiert. Am Ende kann ganz einfach eine PDF-Datei mit der genauen Liste für jeden Bus gedruckt werden.

Die Zimmerverwaltung

Bei der Zimmerverwaltung handelt es sich um eine Art zweitem Check-In vor Ort. Hier werden zuvor vom Vortrupp die verfügbaren Zimmer samt Betten- und Zustellbettenzahl erfasst und ihnen anschließend eine Kategorie („Leiter m“, „Leiter w“, „Teilnehmer m“, „Teilnehmer w“) zugewiesen.
Die Kinder kommen nun mit ihrem Teilnehmerausweis und können durch Scannen des aufgedruckten Barcodes in das richtige Zimmer sehr schnell eingecheckt werden. Gleichzeitig wird sichergestellt, dass Mädchen nicht aus Versehen in ein Jungszimmer oder Leiter in ein Teilnehmerzimmer gebucht werden. Spätere Änderungen sind schnell per Drag&Drop möglich, sollten sich einzelne Teilnehmer noch umentscheiden (was jedes Jahr zu Hauf passiert).

Diese Diashow benötigt JavaScript.

Das Tagesprogramm

Hier wird das genaue Tagesprogramm für jeden Tag eingetragen. Ein typischer Tagesablauf beinhaltet mehrere Küchendienste samt anschließender Mahlzeiten, Großgruppenspiele, ein Bühnenprogramm und einen Reinigungs- und einen Nachtdienst. Für jeden dieser Typen und ein paar Weitere könnten spezifische Zusatzinformationen gespeichert werden. Zurzeit geht dies jedoch nur für die Küchen- und Nachtdienste (wo Dienstteilnehmer eingetragen werden können), sowie Hauptverantwortungen für Großgruppenspiele. Diese Informationen werden auf dem Infoboard angezeigt.

Diese Diashow benötigt JavaScript.

Das Infoboard – Die Anzeige für Teilnehmer

Hier werden die für den heutigen Tag wichtigen Informationen in Form eines Blackboards angezeigt. Dazu gehören der nächste Küchen- und Reinigungsdienst, das heutige und morgige Tagesprogramm, bisher veröffentlichte Bilder der Fahrt (direkt verknüpft mit unserem Online-Fotoalbum), sowie einen Lauftext und eine Freifläche zum Einblenden sonstiger Informationen für uns.

Das Arbeitskreis-Wahlsystem

Problem: Die Kinder kriegen eine Auswahl von 12-15 Arbeitskreisen (zB. Seifenkisten bauen, Scrapbooks basteln, Drachen bauen) zu Beginn vorgestellt und können wählen was sie am Liebsten machen würden, was am zweitliebsten und was am drittliebsten. Es finden insgesamt 3 Durchläufe statt, also nach jedem Durchlauf wechselt man in einen anderen Arbeitskreis. Die Kinder wählen, indem sie ihre Wünsche auf einen Zettel schreiben. Das wurde dann bisher von Hand ausgewertet und versucht möglichst gut zuzuteilen. Das kostete die zuständigen Leiter 2 Tage ihrer wertvollen Urlaubszeit im Leiterbüro.

Es schrie förmlich nach einer automatisierten Lösung. Und da ich in der Uni gerade das Modul „Algorithmen und Berechnungskomplexität I“ belegte, versuchte ich die Sache auf das Rucksack-Problem zu reduzieren. Das scheiterte letztlich an der Tatsache, dass die 3 Prioritäten der Wahl nicht den 3 Durchläufen entsprachen, sondern jeweils eigenständige Teilaspekte waren und das Problem somit etwas komplexer. Es musste also eine eigene Lösung her. Die entsprechende Umsetzung in Node.JS kostete mich sehr viel Zeit, was auch daran lag, dass Node.JS sehr schnell sehr frustrierend für solche komplexeren Algorithmen wird. Ich setzte sogar während der Konzeption zwischenzeitlich auf Java, nur um überhaupt mal einen funktionierenden Algorithmus erarbeiten zu können.

Für die Bedienung wollte ich eine möglichst intuitive UI haben, da auch Technik-Laien das System bedienen sollten und vor allem es auch nach meiner Zeit noch verwendet werden soll.

Die Lösung:

  1. Die Arbeitskreise werden zu Beginn der Fahrt vorgestellt. Jeder AK hat eine feste Nummer
  2. Die Teilnehmer wählen direkt nach der Vorstellung auf Zetteln ihre AK’s, indem sie 3 AK-Nummern nach Prioritäten sortiert auf ihren Wahlzettel schreiben
  3. Der zuständige Leiter tippt die Wahlen in die Liste (Screenshot) ab. Wenn eine Wahl zulässig ist (keine Doppelwahlen), wird die Zeile grün unterlegt, andernfalls ein Fehler ausgegeben und die Eingabe gelöscht
  4. Die Berechnung wird über die Weboberfläche gestartet und vom Node.JS-Server ausgeführt. Hierzu werden 5000 mögliche Zuteilungen berechnet, indem die Eingabe (also die gewählten AK’s) vor jedem Durchlauf randomisiert wird.
  5. Der Algorithmus ermittelt für jeden Durchlauf einen Gesamtzufriedenheitswert basierend darauf, ob der AK gewählt wurde, mit welcher Priorität, und wie viele potenzielle Freunde auch in dem AK sind (Vergleich mit Zimmergenossen, Jahrgangsstufe und Klasse des Teilnehmers). Das Ergebnis des besten Durchlaufs wird gespeichert
  6. Das Ergebnis wird ausgegeben und kann per Drag&Drop von Hand nachträglich korrigiert werden (vgl. Screenshot)

Man sieht, dass die einzelnen Teilnehmer farblich hinterlegt sind. Die Farbe sagt dabei aus, wie viele ihrer gewählten Arbeitskreise die Teilnehmer auch tatsächlich bekommen haben.

Diese Diashow benötigt JavaScript.

Access-Datenbank für VMS Bonn

Das letzte halbe Jahr habe ich eine Access-Datenbank für die Firma VMS Bonn (Link) entwickelt, welche Funktionen zur Verwaltung von Aufträgen, Kunden und Artikeln bietet. Es können Angebote, Rechnungen sowie Materiallisten erstellt werden. Anbei ein paar Screenshots der Oberfläche:
vms1vms6 vms5 vms4 vms3 vms2

1. Semester fast geschafft …

Inzwischen hat die Klausurenphase begonnen und heute wurde dann auch die erste richtige Klausur im Fach TdwA (Techniken des wissenschaftlichen Arbeitens) geschrieben. Ein Fach in dem es im Wesentlichen darum geht zu lernen, wie man wissenschaftliche Texte schreibt und richtige Vorträge vorbereitet und hält. Wieso man in so einem Fach eine Klausur schreiben muss, ist mir nach wie vor schleierhaft, wahrscheinlich gibt es irgendwelche entsprechenden Richtlinien, damit man sich Credits für anrechnen lassen kann. Inhaltlich musste man übrigens Dinge wie eine gute mögliche Schwierigkeitskurve für einen 30-minütigen Vortrag kennen und zeichnen können. Sprich viel stupides auswendiglernen.
Dafür kommen jetzt die anderen Klausuren in LudS (Logik und diskrete Strukturen), AdiP (Algorithmisches Denken und imperative Programmierung), IS (Informationssysteme) und TI (Technische Informatik) welche wesentlich anspruchsvoller sind.
Nach der Klausur heute sind wir nichtsahnend in die Mensa Nassestraße zum Mittagessen gegangen, als dort auf einmal das Bonner Prinzenpaar des Karnevals einmarschierte und Stimmung machte. Nette Überraschung auch wenn nicht so viel wie sonst geklatscht wurde, da ja nunmal alle am essen waren. Zur Feier des Tages wurde am Ende aber an alle Gäste ein Kölsch ausgeschenkt..
Anbei ein paar Bilder von Klausur und Karneval.

Immatrikulation

Es ist so weit. Ich bin Student! 🙂

Heute war der Einschreibungstermin für zulassungsfreie Studienfächer an der Uni Bonn, darunter auch Informatik. Man wird am Studentensekreteriat auch schon gleich freudig begrüßt von mehreren Studenten der Fachschaften Chemie und Informatik. Vor der Tür wird man dann vollgeladen mit Infomaterial, einer schicken Stofftasche und Flyern. Im Büro wurde dann innerhalb weniger Minuten der Papierkram erledigt und wenn man das Gebäude verlässt ist man ein „Ordentlicher Student“. Naja das mit dem ordentlich werden wir dann mal sehen 😀

Vorkurse

Seit zwei Wochen besuche ich nun die Universität Bonn (Rheinische Friedrich-Wilhelms-Universität) und bereite mich auf mein Informatik-Studium dort vor. Der erste Vorkurs in C-Programmierung ist inzwischen gelaufen und hat meiner Meinung nach einen sehr guten Einstieg in diese systemnahe Sprache gegeben. Interessant war für mich auch die Erfahrung, dass die Vorlesungen meist recht simpel und häufig sehr unterhaltsam waren und die anschließenden Übungen es dann doch verhältnismäßig in sich hatten. Dank komplettem Vorlesungs-Skript und netten Tutoren ist aber alles recht gut machbar gewesen.

Der heute begonnene zweite Vorkurs „Formale Methoden der Informatik“ gestaltete sich leider dann doch ein wenig monotoner und langweiliger. So wurde heute lediglich über bool’sche Algebra gesprochen, was eigentlich größtenteils bereits aus der Schule bekannt war. Vielleicht zieht das ja noch an..

CoJoBo-App 2.0

Aktuell setze ich die CoJoBo-App in einer neuen Version um. Dabei habe ich vor allem das fertige Generieren der jQuery-Seiten mit PHP aufgegeben und generiere serverseitig jetzt lediglich noch einen XML-Feed aus der zugrundeliegenden MySQL-Datenbank (ebenfalls mit PHP). In diesem Feed sind alle relevanten Infos für die App enthalten und er erweitert sich, sollte ein Nutzer sich einloggen, um zusätzliche Tags. Clientseitig wird mit Javascript dann auf dem Endgerät der Feed per Cross-Domain-AJAX abgerufen, ausgelesen und daraus die jQuery-Elemente generiert. Das spart zum einen viel Bandbreite ein und ist zum anderen auch wesentlich schneller und flüssiger als in der ersten Version. Zusätzlicher Vorteil ist, dass man diesen Feed nun nicht mehr zwingend mit einer Phonegap Webapp auslesen muss, sondern bei Bedarf native Apps für die Endgeräte schreiben kann, ohne Änderungen am Server vornehmen zu müssen. Für Windows Phone 8 ist dies durch einen Schüler des CoJoBo bereits entstanden.
Neue Funktionen sind darüber hinaus eine Einbindung des Newsfeeds der CoJoBo-Homepage, eine Anbindung an das Ticketsystem der Sysadmins des CoJoBos und eine neue EInstellungsseite mit Geräteverwaltung für den eigenen Account. Zudem ist die App an das neue Accountsystem der Schule angepasst und kann in Zukunft wesentlich einfacher um neue Funktionen erweitert werden. Die App kann für Android, iOS und Windows Phone heruntergeladen werden.

Anbei ein paar Screenshots der neuen Version:

 

4_v2Screenshot_2014-08-27-16-02-442_v2 3_v2