
2 von 3 Tagen am CreateCamp Klagenfurt 2011 war ich mit von der Partie und habe mich temporär dem Projekt datenlandkarten.at angeschlossen. Es geht grundsätzlich um die Eingabe von statistischen Daten in einem geographischen Kontext, die dann auf einer Landkarte visualisiert werden. zB Durch die Eingabe numerischer Werte kann so sehr benutzerfreundlich die Kriminalstatistik der Bundesländer visuell dargelegt werden.
Das Projekt Dieses Projekt wurde bereits von einem Münchner in eingeschränkter Form realisiert, der uns auch den Quelltext zur Verfügung stellte. Nach dem ersten Öffnen war mir klar, dass mit diesem Spaghetti-Code kein modularer Quelltext entstehen kann. So entschied ich mich den ganzen Weg von den Eingabefeldern, zur Überprüfung der Usereingaben, zum Parsen und Rendern der SVG-Graphik bis zum Downloadangebot in zwei Graphikformaten selbstständig zu schreiben. Ingesamt bin ich in etwa 20 Gesamtzeit sehr weit gekommen. Die Software steht grundsätzlich vollständig. Unsauberkeiten gibt es bei der Usereingabenüberprüfung (zu streng angesetzt), das Testen des Renderns wurde noch nicht ausgeschöpft und kleine Features sind noch zusätzlich gewünscht. Des Weiteren sind jetzt noch unerwartet provider-spezifische Anpassungen notwendig (imagemagick).
Was habe ich erreicht? Mit dem Quelltext selbst bin ich recht zufrieden. Die Softwarequalität hätte ich noch ein bisschen steigern können, indem ich vorab eine bessere Modellierung der Anforderungen durchführe. Aber es liegt in der Natur jedes Projektes (zumindest meiner bisherigen Projekte), dass Anforderungen erst im Laufe des Entwicklungsprozesses klar werden und damit iterative Prozesse besser in der Softwareentwicklung greifen.
Was habe ich gemacht? Ohloh sagt mir, dass die Projektdateien auf github zu 73% aus PHP, 19% HTML, 5% Javascript und 3% CSS bestehen. Gefühlt würde ich beziffern, dass 85% Zeitaufwand in PHP, 13% in jQuery geflossen sind und der Rest durch SVG, HTML und CSS dargestellt wird. Leider kann ich es nicht verneinen, dass HTML weiterhin einen sehr langsamen Fortschritt hat und ich wenig bis gar keine HTML5 Features nutzen konnte. CSS war kein wirkliches Aufgabengebiet meiner Arbeit, aber PHP macht wirklich schreckliche Dinge. Es arbeitet nicht so schlimm wie C, aber als unerfahrener Programmierer sollte man nicht Webentwicklung betreiben. So erfolgt die Callback-Übergabe bei preg_replace_callback mittels eines Strings. Dieser stellt jedoch auch keinen normalen Call dar und ruft damit nicht die Funktion des geparsten Strings auf, sondern nur die Funktion auf erster Ebene (keine first-class-citizens). So musste ich dieses Problem über (evil) globals lösen. OOP wollte ich (nur dafür) nicht einführen. Ebenso machten mir einige Eigenheiten von PHP Sorgen. empty(“0″) evaluiert gegen true, ein Backslash muss mit vier Backslashes gematcht werden (preg_replace(‘/\\([^\\]*)/’, ‘$1′, $subject)) und die Parameterreihenfolge von Funktionen ist generell inkonsistent.
Was habe mitgenommen? Ein bisschen Programmiererfahrung. Dass man auf den IE6 keine Rücksicht mehr nimmt. Dass SVG einige Anwendungsfälle hat. Dass binäre Datenformate Programmierern prinzipiell im Weg stehen. Dass es öffentliche Datendanken und APIs für öffentliche Daten geben sollte. Dass lizenzrechtliche Diskussionen im Rahmen der ShareIt-Kultur immer wichtiger werden und dass PHP nicht zu bevorzugen ist.
Danke an den Projektleiter Robert und danke insbesondere für die sehr gelungene Organisation des #bcklu. Die verminderte Anzahl an Sessions bei einer Parallelführung (Barcamp + CreateCamp) halte ich auch für kritikfähig und ich persönlich bin für zwei getrennte Konzepte und Termine: barcamps (Diskussion, Sessions) und projectcamps (programming, promoting).
Recent Comments