BF38: Relevante Projekte

avatar
Marco

Projekte lösen relevante Probleme und können aus der Ferne gut erarbeitet werden. Die aktuelle Folge skizziert ein konkretes Problem und dessen Lösung.

Projekte stellen eine gute Möglichkeit dar, zusammenhängend und selbständig an einem relevanten Problem zu arbeiten – und das klappt zudem gut aus der Ferne. Ich habe ein relevantes Problem für mich gefunden und gelöst und spreche in der aktuellen Folge ausführlich über mein Vorgehen.

  • Finde ein relevantes Problem: Auslastung der Kletterhallen
  • Informationen zur Lösung recherchieren – z.B. die Analyse von David Kriesel zu Bahn-Mining
  • Eine Lösung erstellen, die funktioniert: Daten abrufen und speichern, Programm extrahiert Informationen in CSV-Datei, Pandas-Framework analysiert Daten, Jupyter-Notebook stellt die Daten dar.
  • Lösung verbessern: Parsen der über 800 HTML-Dateien ist zeitaufwändig. Mögliche Lösungen: Parallelisierung (wir haben zwei Probleme), Caching mit pickle.
  • Über das Projekt berichten: dieser Podcast

Transkript

Das Transkript wurde maschinell erstellt und kann Fehler enthalten. Es zählt das gesprochene Wort.

Ausklappen
00:00–0:00:08
Herzlich willkommen zu einer neuen Folge Bildungsfern.
0:00:08–0:00:16
Diesmal soll es um Projekte gehen und zwar das Erstellen oder die Arbeit an eigenen Projekten,
0:00:16–0:00:23
die sinnvoll für einen erscheinen, die Spaß machen und am besten auch noch ein Problem
0:00:23–0:00:24
lösen.
0:00:24–0:00:30
Und da wollte ich mal so ein bisschen vorstellen, das Ganze an einem eigenen Projekt, was ich
0:00:30–0:00:37
selber durchgeführt habe und was vielleicht dann typische Schritte sind, die man bei einem
0:00:37–0:00:42
anderen Projekt, was man dann zum Beispiel im Schulkontext durchführt, daran lernen
0:00:42–0:00:43
kann.
0:00:43–0:00:49
Also zunächst einmal ganz wichtig, es sollte in irgendeiner Form ein relevantes Problem
0:00:49–0:00:50
sein, was gelöst wird.
0:00:50–0:00:54
Nicht irgendetwas Künstliches, nichts, was man sich so irgendwie ausdenkt und jemand
0:00:54–0:00:59
anders macht das dann, sondern am besten ist es, wenn ein Problem adressiert wird,
0:00:59–0:01:03
was tatsächlich auch dann nützliche Lösungen benötigt.
0:01:03–0:01:09
Ich kann das jetzt mal hier an einem Beispiel erläutern, was ich mir da überlegt habe.
0:01:09–0:01:13
Und zwar gehe ich ja regelmäßig gerne klettern in einer Kletteralle.
0:01:13–0:01:21
Hier in Bochum oder in Dortmund gibt es verschiedene Kletterhallen und durch die Corona-Krise haben
0:01:21–0:01:24
die eben ja mehr oder weniger starke Auslastung.
0:01:24–0:01:29
Das bedeutet, man kann in die Halle dann reingehen oder eben auch nicht, wenn sie schon voll
0:01:29–0:01:30
ist.
0:01:30–0:01:36
Und damit man das vorher weiß, haben die Hallen auf ihrer Webseite ein Ampelsystem
0:01:36–0:01:42
installiert, so dass man bei einer roten Ampel ist alles voll, bei einer gelben ist
0:01:42–0:01:47
es schon ziemlich gefüllt und bei einer grünen Ampel ist die Halle eben noch leer oder eine
0:01:47–0:01:53
andere Halle hat tatsächlich so einen Balken von 0 bis 100%, womit sie ungefähr so den
0:01:53–0:01:55
Füllstand dann angeben.
0:01:55–0:02:01
Und ich wollte mal so ein bisschen herausfinden, wann ist es denn am besten, dort hinzugehen?
0:02:01–0:02:07
Also Vormittags, Nachmittags, Montags, Dienstags, Mittwochs gibt es einen besonderen Tag, am
0:02:07–0:02:09
Wochenende, vor einem Feiertag.
0:02:09–0:02:13
Da kann sich ja alles Mögliche eigentlich ergeben und deswegen habe ich mir überlegt, wie könnte
0:02:13–0:02:16
ich dieses Problem also lösen?
0:02:16–0:02:19
Auslastung der Kletterhallen, das sollte bestimmt werden.
0:02:19–0:02:23
Dann kann man sich zunächst mal informieren, wie macht man denn sowas am besten?
0:02:23–0:02:29
Und da habe ich mich erinnert an einen Vortrag von David Kriesel, der immer ganz schöne,
0:02:29–0:02:39
interessante und auch launige Vorträge beim Chaos-Communication-Kongress immer hält und
0:02:39–0:02:44
da hat er einen Vortrag zum Thema Bahn-Mining gehalten.
0:02:44–0:02:50
Also er hat sich mal angeschaut, welche Verspätungen haben denn eigentlich Züge und wie zeigen
0:02:50–0:02:54
sie das auf ihren eigenen Webseiten oder ihren eigenen Abfragesystemen an?
0:02:54–0:02:59
Und er hat das eigentlich ganz gut geschildert, wie man da so vorgeht, was man da so einzelnen
0:02:59–0:03:04
Schritten machen muss, worauf man achten sollte und das hatte ich mich, ja daran hatte ich
0:03:04–0:03:08
mich erinnert und ich habe mir das Ganze dann nochmal angeschaut und mich auch so ein bisschen
0:03:08–0:03:10
versucht da zu orientieren.
0:03:10–0:03:14
Also wichtig ist, man guckt erstmal in so einer Analyse, wie will ich denn da eigentlich
0:03:14–0:03:21
vorgehen und so habe ich mich dann dafür entschieden, in regelmäßigen Intervallen die Webseite
0:03:21–0:03:23
einfach abzuspeichern.
0:03:23–0:03:29
Also automatisch, kleines Skript, alle 10 Minuten wird die Webseite aufgerufen und irgendwo
0:03:29–0:03:30
abgespeichert.
0:03:30–0:03:34
Dann habe ich zumindest schon mal die Daten irgendwo liegen und das war auch so ein Tipp,
0:03:34–0:03:40
den er in seinem Vortrag gehalten hat, immer auch die rohen Daten irgendwo vorliegen haben,
0:03:40–0:03:45
denn wenn man am Ende irgendwie doch mal was ändern möchte oder anders auswerten möchte,
0:03:45–0:03:47
hat man diese Daten alle nochmal zur Verfügung.
0:03:47–0:03:52
Also die Daten wurden jetzt abgerufen, auch das Zeitfenster von 10 Minuten schien mir
0:03:52–0:03:57
eigentlich insofern ganz gut, so dass die Webseite jetzt auch nicht überlastet wird
0:03:57–0:04:02
durch dieses Skript und auch dort nicht weiter auffällt an irgendwelchen Logs, zumindest
0:04:02–0:04:08
habe ich da bisher jetzt nichts erhalten und ja bisher läuft das dann also ganz gut.
0:04:08–0:04:14
Die Daten liegen dann also als HTML-Dateien irgendwo in einem Ordner und ich habe mir
0:04:14–0:04:20
ein kleines Python-Programm geschrieben, was diese Daten dann aus dem HTML herausfummelt
0:04:20–0:04:28
und in eine CSV-Datei abspeichert, sodass ich für jede Halle und jede Zeit eine Auslastung
0:04:28–0:04:29
habe.
0:04:29–0:04:35
Die CSV bietet sich in der Hinsicht ganz gut an, weil das nächste, womit die Daten dann
0:04:35–0:04:43
verarbeitet werden, ist das sogenannte Pandas-Framework und bei dem gibt es die Möglichkeit CSV-Dateien
0:04:43–0:04:53
sehr einfach einzulesen und da dieses Framework auch auf Tabellen arbeitet, war es natürlich
0:04:53–0:04:59
recht einfach das Ganze anzuzeigen mit Hilfe von Jupyter Notebooks, jetzt wird es aber
0:04:59–0:05:03
glaube ich auch so ein bisschen technisch, gibt es dann die Möglichkeit das Ganze auch
0:05:03–0:05:09
im Browser so zu analysieren, dass man ziemlich schnell sich Graphen erstellen kann, man kann
0:05:09–0:05:14
statistische Werte über den Datensatz ermitteln, wie was ist der größte Wert, der kleinste
0:05:14–0:05:19
Wert, wie viele Datensätze gibt es eigentlich, was ist so der Durchschnittswert und ja so
0:05:19–0:05:23
hatte ich dann recht schnell Ergebnisse, die mir gezeigt haben, wann waren denn eigentlich
0:05:23–0:05:28
die Auslastungen so ein bisschen höher, wann waren sie ein bisschen kleiner, ich musste
0:05:28–0:05:33
zwischendurch auch immer mal ein bisschen was anpassen, weil ich mitbekommen habe, dass
0:05:33–0:05:39
die Betreiber entweder die Webseite geändert haben oder die Webseite war auch zwischendurch
0:05:39–0:05:44
gar nicht verfügbar bzw. nur die Datenbank im Hintergrund anscheinend nicht, sodass
0:05:44–0:05:50
ich dann einfach Seiten hatte mit Datenbankfehlern, die musste ich dann aussortieren und ja mittlerweile
0:05:50–0:05:55
klappt das eigentlich ganz gut, dass ich die automatisch runterladen kann, neu generieren
0:05:55–0:06:00
lassen kann und dann werden da einige schöne Dateien erzeugt.
0:06:00–0:06:06
Es gab ein Problem dabei, auch ganz typisch für ein Projekt, also irgendwann während
0:06:06–0:06:10
der Umsetzung stößt man dann auf ein Problem und dann guckt man mal wie sieht das Problem
0:06:10–0:06:17
aus und wie kann man das lösen. Mein Problem war das folgende, die Dateien,
0:06:17–0:06:22
die HTML-Dateien, die ich runtergeladen habe, die mussten von dem Programm eingelesen und
0:06:22–0:06:31
verarbeitet werden und das hat gedauert, also dieses Einlesen über jetzt mehrere tausend
0:06:31–0:06:35
oder fast zehntausend Dateien, die da sind, hat dann einfach schon so eine Weile gedauert,
0:06:35–0:06:44
sodass ich das nicht in einem Rutsch machen konnte und da gab es jetzt zwei Lösungen,
0:06:44–0:06:51
die erste Lösung ist natürlich immer die falsche, meine Idee war, ich kann das ja parallelisieren,
0:06:51–0:06:56
also dauert ja irgendwie eine ganze Weile und ich habe jetzt hier mehrere Kerne in meinem
0:06:56–0:07:04
Rechner, warum verteile ich das nicht auf mehrere. Eine so eine Grundregel ist bei der Parallelisierung,
0:07:04–0:07:10
wenn man ein Problem parallelisiert hat man am Anschluss zwei Probleme mindestens und so
0:07:10–0:07:14
war es dann auch hier, ich habe gemerkt, das hat sich alles nicht richtig angefühlt, es
0:07:14–0:07:21
war auch dann kompliziert zu gucken, wie verteile ich dann die Dateien auf die einzelnen Threads,
0:07:21–0:07:24
wie werden die Ergebnisse dann wieder eingesammelt und zusammengefasst, hätte wahrscheinlich
0:07:24–0:07:29
auch irgendwie funktioniert, aber trotzdem wäre es immer noch zu langsam gewesen.
0:07:29–0:07:38
Zweite Idee, die mir in den Kopf kam, war Caching, also wenn ich jetzt ja schon mal 100 Dateien
0:07:38–0:07:44
irgendwann eingelesen habe, dann kommen ja immer nur pro Tag ein paar hundert Dateien
0:07:44–0:07:50
vielleicht hinzu und dann muss ich die älteren ja nicht nochmal einarbeiten und deswegen werden
0:07:50–0:07:57
die Dateien eingelesen und das Ergebnis wird in einem Cache Datei einfach abgespeichert,
0:07:57–0:08:05
da gibt es mit Python und dem Paket Pickle die Möglichkeit, beliebige Dateien in einem
0:08:05–0:08:10
BNR Format abzulegen, das kann man dann auch nicht später nochmal irgendwie groß weiterverarbeiten,
0:08:10–0:08:15
ist also sehr was Python eigenes, aber es war auf jeden Fall eine Lösung, die mein Problem
0:08:15–0:08:22
extrem gut gelöst hat, sodass ab jetzt nur noch die jeweils neu angefallenen Daten analysiert
0:08:22–0:08:29
werden mussten, also ich hatte jetzt ein relevantes Problem, habe mich informiert, habe eine Lösung
0:08:29–0:08:35
konzipiert und habe ein Problem jetzt gefunden, entdeckt, geschildert und das auch nochmal
0:08:35–0:08:36
gelöst.
0:08:36–0:08:40
Letzter Punkt, der bei einem Projekt immer noch ganz wichtig ist, jetzt habe ich das
0:08:40–0:08:45
ja irgendwie gemacht, sollte ich irgendwie auch darüber berichten, vielleicht könnte
0:08:45–0:08:50
man eine Dokumentation schreiben, man könnte es veröffentlichen in einem Blogpost, ja
0:08:50–0:08:56
oder aber, wie hier, ich kann ja auch einen Podcast drüber verfassen und das ist jetzt
0:08:56–0:09:01
meine Art, über dieses Projekt zu berichten, anderen also die Möglichkeit zu geben, daran
0:09:01–0:09:09
zu lernen, vielleicht auch zu verbessern, noch mit eigenen Ideen etwas beizusteuern,
0:09:09–0:09:15
mir weiter zu helfen und ja vielleicht findet das jemand anders dann ja auch nützlich das
0:09:15–0:09:20
Projekt, was ich mache und kann es dann auch noch für sich benutzen, also das waren meine
0:09:20–0:09:26
Gedanken zum Thema Projekte, wenn man Projekte im Bildungskontext immer irgendwo einsetzt
0:09:26–0:09:31
und wir machen das an vielen unterschiedlichen Stellen, es ist immer ganz gut, wenn man sich
0:09:31–0:09:37
diese Gedanken vielleicht ja nochmal zu Gemüte führt.
0:09:37–0:09:42
Projekte sind auch in Corona-Zeiten immer eine gute Gelegenheit, mal darüber nachzudenken,
0:09:42–0:09:49
ja wie kann jetzt jemand selbstständig und eigenständig, eigenverantwortlich über längeren
0:09:49–0:09:54
Zeitraum an einer Sache arbeiten, wenn also dann mal wieder irgendwo ein Lockdown ansteht,
0:09:54–0:09:58
gibt es vielleicht die Möglichkeit, wenn man ein Projekt durchführt, ja, dass man das dann
0:09:58–0:10:06
selbstständig zu Hause erarbeitet, das vielleicht als möglicher Beitrag für den nächsten Lockdown,
0:10:06–0:10:12
ich hoffe er bleibt jetzt erstmal aus, jetzt sind ja auch bald Sommerferien, insofern ist
0:10:12–0:10:15
das jetzt auch erstmal nicht kritisch, aber man könnte sich ja über die Ferien das ein
0:10:15–0:10:20
oder andere Projekt mal überlegen, was man durchführen könnte, andererseits habe ich
0:10:20–0:10:26
auch die Erfahrung gemacht, dass was man sich selber so überlegt, findet man selber meist
0:10:26–0:10:33
cool, Schüler*innen kann man da häufig nicht für so in dem Maße begeistern, wie man selber
0:10:33–0:10:39
davon begeistert ist, deswegen sind Projektideen, die aus Schüler*innen Sicht entstehen eigentlich
0:10:39–0:10:44
immer noch am besten, man könnte aber sich vielleicht Themen überlegen, zum Beispiel
0:10:44–0:10:51
ein Spiel oder ein nutzlicher Helfer zum Lernen, wie zum Beispiel ein Vokabeltrainer, den man
0:10:51–0:10:56
erstellt, ich denke jetzt hier so sehr in der Softwareentwicklungssicht, also wenn man es
0:10:56–0:11:01
vielleicht noch genügend offen lässt und dann Möglichkeiten für kreative Entfaltung
0:11:01–0:11:09
gibt, dann kann es auch da an der Stelle schöne, interessante und gute Projekte geben, bis dahin
0:11:09–0:11:13
wünsche ich euch alles Gute, bleibt gesund, haltet Abstand und wascht euch immer schön
0:11:13–0:11:15
die Hände, bis dahin und tschüss.
0:11:15–0:11:19
[Musik]
0:11:19–0:11:22
[Musik]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert