Konzepte bis zur Funkiontsfähigkeit entwickeln, das war in diesem Format die Herausforderung. Dafür wurden Prototyping-Methonden in allen Projektphasen angewannt, vom Storyboard bis zum funktionstüchtigen technischen Prototypen.
Concentration ist eine Anwendung zur Messung der eigenen Konzentration beim Arbeiten am Computer
Während der Corona-Pandemie saßen sehr viele Menschen im Home-Office, auch wir Studierenden. Wenn man täglich stundenlang vor dem Bildschirm in Vorlesungen sitzt, sinkt schnell die Motivation und auch die Konzentration. Hier fällt es auch den Dozierenden schwer, durch die Bildschirme und durch viele ausgeschaltete Kameras einzuschätzen, wie konzentriert ihre Studenten sind.
Unsere Idee war es, eine Anwendung zu entwickeln, die die Konzentration ermittelt und so den Online-Unterricht nachhaltig verbessern kann.
Konzept
Bei der ersten Anmeldung bei Concentration wird ein D2R-Test durchgeführt, der ermittelt, ob man konzentriert genug ist, um die ersten Grundwerte zu schaffen. Ist dieser erfolgreich abgeschlossen, kann man die erste Messung starten.
Mit dem Starten einer Messung fängt der Keylogger an, mitzulesen. Nun wird zuerst ein Grundwert geschaffen. Diese Werte werden dann zur “Norm”. Wird die Varianz zu groß, wird ein Aufmerksamkeitsping ausgelöst. Der Nutzer wird dadurch gebeten, eine Aufgabe zu lösen. Der Sinn dieser Aufgabe ist es, zu überprüfen, ob der Nutzer wirklich unaufmerksam ist, oder ob gerade einfach nur weniger geschrieben wurde.
Es können zwei Arten von Aufgaben auftreten. Zum einen gibt es einfache und kleine Rechenaufgaben, welche gut im Kopf zu lösen sind, zum anderen sogenannte “Captchas”, die ähnlich funktionieren wie Googles “Im not a Robot”. Durch das Lösen der Aufgaben erhält das Programm verschiedene Informationen. Einmal die Reaktionszeit, also wie lange der Nutzer gebraucht hat um auf den Ping zu klicken. Dann auch die Bearbeitungszeit, also wie lange der Nutzer gebraucht hat um die Aufgabe richtig zu lösen. Sowie natürlich auch wie viele Fehler der Nutzer während des Bearbeitungsvorgangs gemacht hat.
Die Daten des Keyloggers sowie die Bearbeitungszeit der Aufgaben werden dann in der Statistik als Diagramm dargestellt. So hat der Nutzer einmal einen genauen Überblick über die erfassten Werte des Tages sowie eine Übersicht über die Woche mit dem täglichen Durchschnitt.
Da wir das ganze Konzept im Hochschulkontext sehen, gibt es auch die Möglichkeit, Meetings beizutreten. Lehrpersonen haben die Möglichkeit, einen Einladungslink oder eine Meeting-ID zu teilen, wodurch die Studenten beitreten können. So erhält die Lehrperson Übersicht über den Konzentrationsstand der teilnehmenden Studenten und kann in das Unterrichtsgeschehen schneller und nachhaltiger eingreifen. Die Datenübermittlung erfolgt natürlich vollkommen Anonym und ist auf freiwilliger Basis, sodass kein Student dadurch irgendwelchen Nachteilen ausgesetzt wird. Der Dozent hat auch die Möglichkeit bei seinen Studenten manuell Aufmerksamkeitspings auszulösen, wenn er das Gefühl hat, dass die Konzentration abfällt oder die Aufmerksamkeit schwindet.
Fullstack
Der grobe Aufbau unseres Systems lässt sich an folgender Grafik erkennen:
Das Frontend haben wir in Vue geschrieben. Da wir eine App entwickeln wollten, entschieden wir uns dafür Electron als Framework zu nutzen. Electron funktioniert in diesem Fall als “lokales Backend” für Vue. Vue und Electron kommunizieren miteinander über IPC (Interprocess Communication). Electron koordiniert die weiteren Fenster, also die Captchas, Rechenaufgaben usw, kommuniziert mit anderen Clients via MQTT und steuert den Keylogger, welcher in Python geschrieben ist. Vue kommuniziert mit dem Backend via Rest-API. Das Backend läuft in Portainer und liegt auf einem privatem Server. Als Datenbank nutzen wir MongoDB.
Pains & Gains
Im Verlauf des Projektes haben wir sehr viel neues gelernt, vor allem in den Momenten in denen wir nicht weiter wussten und fest hingen. Ob durch nicht genügend Wissen, Verbissenheit von uns oder Fehlern die niemand verstanden hatte warum sie da sind. Auf einige Punkte würden wir gerne kurz eingehen.
Zum einen wäre da der Keylogger. Ein Keylogger per se ist schon ein großer Eingriff in die Privatsphäre, weshalb der Coding-Part davon sich auch zu einem größeren Problem herausstellte als Anfangs gedacht. Die meisten Betriebssysteme wehren sich, verständlicherweise und auch zum Glück, gegen Fremdprogramme die Zugriff auf die Tastatur und den Input haben wollen. Das Programm muss auch immer noch als Administrator gestartet werden, da der Keylogger sonst nicht aktiviert werden kann. Es ist mittlerweile auch die siebte oder achte komplett neue Version des Keyloggers, da wir immer wieder an Punkte kamen, wo ein weiterarbeiten einfach nicht mehr möglich war oder so kompliziert, das wir lieber von vorne anfingen. Relativ zur Hälfte änderten wir auch die Programmiersprache von JavaScript auf Python. Dies war eine sehr zeitaufwendige Entscheidung, jedoch sind wir im Nachhinein froh es getan zu haben. Die meisten Code-Snippets die wir zu Keyloggern im Internet fanden waren nämlich in Python geschrieben, weshalb wir uns dort schlussendlich eingearbeitet haben.
Ein weiterer Painpoint war auf jeden Fall auch Electron. Electron ist im Endeffekt auch nur ein Webbrowser, welcher Websiten in einer lokalen Umgebung laufen lässt. Also mussten wir es erstmal hinbekommen, native Node-Module, welche nicht für das Web entwickelt worden sind, irgendwie ins Web zu bekommen. Dann mussten wir das Framework an sich umbauen, da es in dem Ausgangszustand wie es von den Entwicklern kommt beim schlussendlichen Bauen der App bei uns Fehler auswarf. Auch die Kommunikation zwischen Electron und dem Keylogger zum Laufen zu bringen war ein Kampf, bzw. den Keylogger überhaupt in Electron einzubinden, so dass er auch tut wie er soll.
Einige Probleme waren aber auch menschlicher Natur. So waren wir zum Teil in manchen Punkten viel zu verbissen und haben uns selbst festgefahren, weil wir manche Aspekte nicht verändern wollten und der Meinung waren, es geht nicht besser oder anders und so viel Zeit verloren haben. Wir sind aber auch froh, diese Fehler gemacht zu haben da wir so die Design Methode “Kill your Darlings” am eigenen Leib erfahren konnten und daraus viel lernen durften.
Hinterlasse einen Kommentar