Vom 9.-11. September fand in Palma de Mallorca die Web Engineering Unconference statt. Das ist ein Treffen auf dem sich 100 Menschen, die im Bereich Webentwicklung tätig sind, zu diversen Themen austauschen.
Parc de la mar, Palma de Mallorca in der Abendsonne
Das klingt etwas vage, was daran liegt, dass es sich um eine Unkonferenz handelt. Bei solch einer Veranstaltung gibt es zu Beginn keine feststehenden Vorträge und es ist noch nicht einmal klar, wer überhaupt etwas erzählen oder vorführen wird. Die Idee ist, dass jeder Teilnehmer auch Vortragender sein kann. Jeder kann Themen vorschlagen, über die sie/er/es reden oder etwas erfahren möchte. In einer gemeinsamen Abstimmung wird dann festgelegt, welche Themen genommen werden.
Wie der Veranstalter zu den Teilnehmern zu Beginn sagte: „We provide the rooms, the internet and food. You provide the content“.
Web engineering unconference – Veranstaltungsplakat
Der harte Kern der Teilnehmer und Sponsoren stammt aus der deutschen PHP E-Commerce Szene. Im Gegensatz z.B. zum E-Commerce Camp Jena ist die Web Engineering Unconference jedoch internationaler. Es waren Teilnehmer aus ganz Europa anwesend – darunter auch einige aus Mallorca ;-) und eine Gruppe kam sogar aus Vietnam. Die Konferenzsprache war daher Englisch.
Socializing
Bei solch einer Veranstaltung ist das gegenseitige Kennenlernen und die Kontaktpflege natürlich ebenfalls sehr wichtig, zumal sich aus diesen Gesprächen auch Themen für Vorträge entwickeln können. Fast alle waren bereits am Vortag angekommen, weil am Freitag Abend das erste Zusammentreffen in lockerer Umgebung stattfand: Einer Cocktail Bar am Rande der Altstadt von Palma.
Kurz vor dem Ansturm – Ginbo Cocktail Bar in Palma
Trotz des gemeinsamen „Vorglühens“ startete die Veranstaltung am Samstag Morgen pünktlich um 9:00. Die Vorträge und Workshops begannen nach der Themenfindung um 12:15, wobei es stets drei parallele Tracks gab.
Der Beginn der Unkonferenz – Die Sammlung der Themen
Themen
Herkömmliche Konferenzen sind häufig verkappte Verkaufsveranstaltungen, auf denen die Sponsoren in Vorträgen für ihre Produkte werben. Hier war es anders, weil Techniker unter sich waren, um über interessante Herausforderungen zu reden.
Von denen sind viele gar nicht mal technischer Natur. Es ging zum Beispiel über kulturelle Stolperfallen in internationalen Teams und Herausforderungen, wenn man selbst in anderen Ländern arbeitet. Zu dem Thema konnten die Mitarbeiter von NFQ Asia aus Vietnam einiges erzählen. Methoden zur Verbesserung der Vereinbarkeit von Familie und Arbeit in Zeiten von Homeoffice waren ebenfalls gefragt.
Moderation und Abstimmung zu den eingereichten Themen
Aber technische Themen kamen natürlich auch vor. Ich habe mir angesehen, wie sich das Headless CMS Storyblok in Shops und andere Websites oder Apps einbinden lässt.
Dass ein Vortrag zum Thema Zeit- und Datumsberechnungen mit viel Interesse aufgenommen wurde, können Nicht-Programmierer eventuell nicht ganz nachvollziehen. Jeder, der schon einmal damit zu tun hatte, weiß aber, dass es ein Thema mit kilometertiefen Abgründen ist. Stichworte wie Zeitzonen, Sommer-/Winterzeit, Schaltjahre, Julianischer und Gregorianischer Kalender können zu vorzeitig ergrauten Haaren beitragen.
Die Mitarbeiter von Shopware leiteten eine für mich sehr spannende Diskussion darüber, wie man komplexe Software automatisiert testet. Welche Arbeitstechniken und Tools sichern die Qualität bei vertretbarem Aufwand?
Mehrere Slots hatten die Grundlagen, wie Webhosting und Sicherheit in Containerarchitekturen zum Thema. Sie wurden u.a. von Mitarbeitern von Suse und Scale gehalten.
Mehrere Vorträge befassten sich im weiteren Sinne mit Künstlicher Intelligenz und Machine Learning. Es gab eine Live Vorführung der beiden viel besprochenen KI Bildgeneratoren Dall-E und Midjourney, die aus kurzen Textbeschreibungen Bilder generieren. Die Ergebnisse reichen von absurd über praktisch bis zu verblüffend. Schnell kam die Frage nach Einsatzszenarien, Zukunft von Grafikern und Anbietern von Stockfotos auf, aber auch inwieweit sich diese Technik mit dem Konzept des Urheberrechts verträgt.
Zwei Mitarbeiter von Scale führten den Stand ihrer Forschung vor, wie sie Machine Learning einsetzen wollen, um im Hosting möglichst in Echtzeit Schwachstellen (Sicherheitslücken, Angriffsszenarien, Performanceprobleme etc.) entdecken zu können.
Zwischendurch war für das leibliche Wohl gesorgt. Sowohl die Mittagessen am den beiden Konferentagen, als auch das Abendessen am Samstag fand im Restaurant des Konferenz Hotels INNSIDE Palma Bosque statt.
Innenhof des Hotels am AbendGemeinsames Abendessen als geschlossene Veranstaltung
Ein technisches und optische Highlight war die Vorführung des fotorealistischen 3D Konfigurators für Audi. Ursprünglich wurde die Technik entwickelt, um in den Showrooms per VR Brille jede mögliche Fahrzeugkonfiguration in 3D vorführen zu können. Dies wurde so weiter entwickelt, dass diese Echtzeitrenderings auch in jedem Webbrowser angesehen werden können. Grob zusammengefasst nimmt der Browser die Steuerbefehle entgegen, schickt sie per WebRTC an eine Renderengine in der Cloud, die das Ergebnis in Echtzeit berechnet und per Videostreaming an den Browser zurücksendet.
Die Wirkung ist verblüfend. Die Fahrzeuge lassen sich in jedem beliebigen Blickwinkel von außen und innen ansehen. Man kann jederzeit die Farbe, Räder und sonstige Ausstattung ändern, Türen und Kofferraum öffnen und schließen und sich das ganze in verschiedene Tag- und Nachtszenarien anzeigen lassen. Die Animationen sind butterweich, die Bildqualität extrem hochwertig, inklusive der Reflexionen der Umgebung.
Wie ich bereits schrieb, finden interessante Gespräche häufig abseits der Konferenzräume statt. So hatte ich mit einem Mitarbeiter von Innogames ein interessantes Gespräch über Personalführung und Karrierewege. Andere Gespräche hatten auch politische Dimensionen, wie Datenschutz, Mobilitätsverhalten und Umweltschutz auf individueller und struktureller Ebene. Und so schaffe ich die Überleitung zum Elefanten im Raum:
Denkt denn keiner an die Umwelt?
Wobei – die Umweltfrage ist eigentlich kein Elefant im Raum mehr, weil sie eben doch angesprochen wird.
Diese Web Engineering Unconference findet bereits seit einigen Jahren statt und natürlich wird die Frage diskutiert, ob es man überhaupt noch eine Veranstaltung abhalten sollte, bei der die meisten Teilnehmer mit dem Flugzeug anreisen.
In der Diskussion stand eine Verlegung an einen Ort, der zentraler liegt und per Bahn erreicht werden kann. Aufgrund der internationalen Teilnehmer ist es aber so, dass es diesen zentralen Ort nicht gibt und in beinahe jedem Fall mindestens ein Drittel per Flugzeug kommen würde.
Diese etwas unbefriedigende Situation hat man damit etwas abgemildert, indem pro Teilnehmer Umweltzertifikate für die Flugkompensation bezahlt wurden. Manche kommen auch mit Partnern/Famile und kombinieren das mit einem Urlaub, den sie ohnehin gemacht hätten. Viele haben ihre alltägliche Zwangsmobilität durch Homeoffice auch so heruntergefahren, dass sie nur noch wenige, aber dafür inhaltlich effektivere Treffen zum persönlichen Austausch, wie diese Veranstaltung besuchen.
Immerhin gibt es das Problembewusstsein und viele versuchen damit konstruktiv umzugehen. Das war auch an der sehr anregenden Diskussion zu merken, deren Ausgangspunkt war, wie wir Entwickler dazu beitragen können, dass unsere Software weniger Strom verbraucht. Zu Beginn wurde die Frage gestellt, welche der Frameworks und Libraries, die wir verwenden, den wenigsten Rechenaufwand erfordern. Aber schnell wurde klar, dass das nur ein kleiner Teil des Problems ist.
Sicherlich ist die Frage, weshalb ein einfacher E-Mail Client heutzutage eigentlich hundert mal soviel Speicher verbraucht, wie ein komplettes Betriebssystem vor 25 Jahren richtig und wichtig. Andererseits sind die hier erreichbaren Reduzierungen wenig wert, solange Geschäftsmodelle wie Streaming und KI zu explodierenden Datenmengen sorgen. Das oben erwähnte technisch sehr beeindruckende 3D Konfigurator von Audi ist zumindest in dieser Hinsicht sicherlich ein sehr schlechtes Beispiel.
Fazit
Ich war mir trotz Neugier zu Beginn nicht sicher, ob es eine gute Idee ist, an dieser Konferenz teilzunehmen. Ich arbeite ja bereits seit einiger Zeit nicht mehr im Bereich E-Commerce und befürchtete, dass mich die Themen nicht ansprechen würden. Die Teilnahme habe ich aus eigener Tasche bezahlt und für nur vier Tage zu fliegen, möchte ich eigentlich mittlerweile auch vermeiden.
Nach der Veranstaltung, den Tag noch in kleinem Rahmen gemütlich ausklingen lassen.
Zum Schluss war ich aber doch froh, teilgenommen zu haben. Die Bandbreite der Themen war groß, die Anregungen, die ich mitgenommen habe, waren vielfältig und die Gespräche, die ich hatte waren angenehm und interessant. Zudem habe ich liebe und interessante Menschen wiedergesehen. Ich bin mir sicher beim nächsten Mal wieder dabei zu sein und dann auch ein interessantes Thema vorzubereiten.
Was in den letzten Jahren (oder Jahrzehnten?) von vielen Angestellten dringend gewünscht aber von den meisten Firmen ignoriert oder sogar blockiert wurde, ging plötzlich ganz schnell, als Corona akut wurde: Homeoffice.
Immer mehr Büroangestellte wünschten sich die Möglichkeit zu Homeoffice. Aber selbst Firmen, in denen das eigentlich recht einfach umsetzbar gewesen wäre, sperrten sich häufig dagegen. Die Gründe zur ausgeprägten Präsenzkultur sind vor allem unflexible Organisation und Misstrauen gegenüber den Angestellten.
Das hat auf beiden Seiten zu einer gewissen Mystifizierung geführt: Viele Firmen sahen in Homeoffice eher eine dunkle Bedrohung. Vielen Angestellten erschien darin eine Verheißung zu höherer Lebensqualität.
Beide Extreme haben bei mir nur Stirnrunzeln hervorgerufen, weil ich bereits seit 2006 Erfahrung mit Homeoffice habe. Diese Erfahrungen haben jetzt in Deutschland hunderttausende Angestellte und deren Firmen im Expresstempo nachgeholt. Gut so, dann das entmystifiziert das Thema endlich.
Stufe 1 der Entmystifizierung: Homeoffice ist bedrohlich / befreiend
Alle Beteiligten haben viel gelernt. Die Firmen haben gelernt:
Homeoffice ist möglich und schnell einsetzbar.
Die Organisation kann (und muss) durch Homeoffice effizienter werden.
Videokonferenzen sind besser als Telefonkonferenzen und können Präsenzmeetings häufig ersetzen.
Angestellten erledigen die Arbeit auch dann, wenn nicht alle 10min der Chef zur Tür reinkommt.
Zur Zeit wird sehr viel Miete für ungenutzte Bürofläche gezahlt, obwohl die Arbeit weiterhin erledigt wird.
Die Angestellten haben gelernt:
Für Homeoffice braucht man verlässliches Internet und einen geeigneten Arbeitsplatz. Der Laptop auf dem Küchentisch genügt nicht.
Homeoffice und gleichzeitig Kinder betreuen, ist sehr anstrengend.
Mal einige Tage zu Hause zu sein ist nett. Immer zu Hause zu arbeiten nervt aber.
Auf die Dauer fehlen einem die Sozialkontakte zu den Kollegen (jedenfalls, wenn man ein nettes Team hat)
Stufe 2 der Entmystifizierung: Homeoffice ist gut für die Umwelt – oder?
Zeit für Stufe 2 der Entmystifizierung: Viele Befürworter propagieren, dass durch Homeoffice unnötige Pendelei entfällt und es deshalb aus Umweltschutzgründen positiv ist.
Das stimmt natürlich zunächst – zumindest in einer Phase, in der Homeoffice noch etwas neu und ungewohnt für die Angestellten ist. Ob das langfristig auch noch zutrifft, ist aber nicht so klar. Ich möchte meine Skepsis begründen. Zunächst der Blick zurück.
Unter Stadtplanern gab es bereits Ende der 80er / Anfang der 90er Jahre – also lange bevor das Internet für die Allgemeinheit zugänglich war – eine Diskussion darüber, wie der damals noch neue Einsatz von Computern und deren beginnende Vernetzung die Ansprüche an Raumnutzung, Verkehr und Energie verändern würde. Dabei wurden die heute sichtbaren Hauptfelder bereits richtig erkannt:
Onlinebanking ersetzt Bankfilialen
E-Commerce ersetzt Läden
Stark verändertes Kommunikationsverhalten durch neue Dienste wie Email und Videokonferenzen
Akten, Schriftverkehr und Transaktionen werden elektronisch verarbeitet und gespeichert. Ohne Papier sind sie nicht mehr ortsgebunden
Dadurch auch immer mehr Telearbeit
Aus damaliger Sicht erschien es logisch, dass die bevorstehende Welle der Entmaterialisierung die räumlichen Strukturen auflösen würde. Die überfüllten und teuren Innenstädte werden überflüssig und die Menschen ziehen sich in kleinere, überschaubare und naturnahe Orte zurück, zahlen weniger für das Wohnen. Städte werden aufgrund der abnehmenden Attraktivität und Funktion tendenziell leerer und gibt weniger Grund für Verkehr.
Die Menschen und der Rebound-Effekt
30 Jahre später wissen wir, dass genau das Gegenteil geschehen ist. Der Run auf die Metropolen hat erst recht eingesetzt. Die Zentralisierung und Verdichtung hat ständig zugenommen. Weite Landstriche haben so viel Abwanderung, dass dort die Grundversorgung nicht mehr aufrecht erhalten werden kann. Der Verkehr ist explodiert.
Die damals vollkommen logisch erscheinenden Prognosen erwiesen sich also als völlig falsch. Daher meine Skepsis.
Meine Prognose
Nun, da die Angst bei vielen Firmen vor dieser „neuen“ (Neu wie Neuland) Arbeitsweise schwindet und die Einsparpotentiale sichtbar werden, wird die Telearbeit vermutlich stark zunehmen – evtl. auch gegen den Willen der Mitarbeiter.
In meinem Bekanntenkreis habe ich nun folgende Erfahrung gemacht: Diejenigen, die bereits seit längerem ständig remote arbeiten, haben erkannt, dass das nicht unbedingt zu Hause in Berlin oder Bielefeld sein muss. Wenn man schon woanders sein kann, warum dann nicht auf Gran Canaria, am Schwarzen Meer oder in Thailand?
Das klingt zwar verlockend, führt aber zu einem CO2 intensiven Reiseverhalten. Und das gilt nicht nur für Solo Freelancer.
Ich habe 2010 das erste Mal eine Firma besucht, die in ihrem Office in San Francisco fast keine Angestellten mehr hatte: Automattic – die Firma hinter WordPress. Die Mitarbeiter, Entwickler, Grafiker und sonstige Angestellen lebten rund um den Globus verstreut. Matt Mullenweg erklärte, dass er die besten Leute bekommen will und die möchten nun mal nicht alle im Silicon Valley leben. Um den Mitarbeitern dennoch ein Gemeinschaftsgefühl zu ermöglichen, gibt es regelmäßig Events in allen Erdteilen, auf denen sie sich treffen.
Zwar sparen sich die Mitarbeiter so den normalen Arbeitsweg, benötigen zunächst weniger Energie und erzeugen weniger Emissionen. Durch die Teilnahme an den Events werden diese Effekte jedoch überkompensiert.
Ein langfristig positiver Umwelteffekt tritt also möglicherweise auch nicht auf.
Dirk Ollmetzer | Dienstag, 21 August 2018 | Development
Auf dem diesjährigen eCommerce Camp in Jena hatte ich einen Vortrag mit dem Titel „No KISS – we’re doing it wrong“ gehalten. Darin hatte ich mich kritisch mit aktuellen Trends in der Entwicklung von Webapplikationen auseinandergesetzt. Die Kernthese ist, dass in der Entwicklung der Trend zu Komplexität und Aufgeblähtheit geht. Alles was im Entwickler-Mainstream gerade angesagt ist, macht die Anwendungen fett, träge, angreifbar, schwieriger zu handhaben und aufwändig zu debuggen.
Ich hatte erwartet, mit dem Vortrag auf viel Widerspruch zu stoßen, aber das Feedback war seinerzeit wohlwollend. Das nehme ich nun zum Anlass, eine kleine Artikelserie mit dem Titel „Gegen den Strich“ zu diesem Thema zu schreiben.
Über Professionalität
Der Trend zur Komplexität und Fettleibigkeit ist so stark und wird so wenig hinterfragt, dass es mir zur Zeit wirklich die Lust an sogenannter „professioneller“ Softwareentwicklung vergällt.
Das betrifft Ebenen – angefangen von der Softwarearchitektur, über Designpatterns, benutzten Tools und Libraries, Entwicklungsmethoden, Deployment und Infrastruktur.
Ich habe gesehen, dass neue Produkte auf abstrakter Ebene eine hervorragende Architektur mitbringen und auf Codeebene derart akademisch aufgebläht sind, dass es mich bei dem Gedanken gruselt, in solch einem Codemoloch unter Zeitdruck Fehler suchen zu müssen.
Ich habe gesehen, dass Software, die bereits seit 10 Jahren erfolgreich eingesetzt wird, so „modernisiert“ wurde, dass die alten Designschwächen beibehalten wurden („wir müssen abwärtskompatibel bleiben“) und mit völlig anderen Architekturansätzen überformt, so dass am Ende weder der alte, noch der neue Ansatz sauber umgesetzt sind.
Ich hatte Diskussionen über den Einsatz von Tools, die ich für den angestrebten Zweck nicht benötigt habe, aber benutzen sollte, weil man das so macht und das angeblich eine saubere Methode sei.
Spätestens da klappt bei mir das Visier runter.
Ich soll Tools benutzen, obwohl ich sie aktuell nicht brauche?
Ich soll das „Framework des Tages“ nutzen, weil das gerade der heisse Scheiss ist?
Ich soll Software immer weiter abstrahieren, bis überhaupt nicht mehr erkennbar ist, an welcher Stelle eigentlich was gerade passiert?
Sorry Babe, ich bin nicht der Meinung, dass so etwas professionell ist.
Professionell ist, mit möglichst geringem Mitteleinsatz das Maximum an Output zu erzielen.
Professionell ist, Dinge so klar zu gliedern, dass im Fehlerfall sehr schnell die Ursache gefunden und behoben werden kann.
Professionell ist, Designs und Abläufe in sich stimmig zu entwerfen.
Professionell ist, unnötige Abhängigkeiten zu vermeiden
Professionell ist, Werkzeuge und Verfahren darauf zu überprüfen, ob sie die Abläufe verbessern, das Setup vereinfachen, Abhängigkeiten reduzieren und den Mitteleinsatz zu verringern oder den Output zu vergrößern.
Vom Anecken bei anderen Entwicklern
Ich wurde vor einiger Zeit gefragt, was ich von Symfony als Framework halte und der Fragende war sehr erstaunt, als er von mir die offensichtlich unerwartete Antwort bekam „sehr wenig“. Noch schlimmer: Die Frage, welches Framework gut fände habe ich mit „gar keines“ beantwortet. Und mit meiner Gegenfrage, warum er denn überhaupt ein Framework nutzen möchte und nicht lieber auf wenige, gut ausgesuchte Libraries setzt konnte er letztlich gar nichts anfangen.
Ich konnte regelrecht sehen, wie in seinem Kopf die Schublade „Kleiner Hobbyentwickler“ aufging und ich dort reingestopft wurde.
Gegen Gedankenlosigkeit und Dogmen
Natürlich ist nicht alles schlecht und es gibt tatsächlich sehr sinnvolle „Best Practices“.
Auf der Suche nach einem einheitlichen Codingstil gab es vor 15 Jahren erbitterte Grabenkäpfe mit Schwerverletzten. Heute stellt man seine IDE einfach auf „PSR-„/PSR-4“ ein und fertig.
Es macht auch wenig Sinn, lang darüber zu diskutieren, wie eine REST Schnittstelle funktioniert und der Einsatz des MVC-Patterns bei normalen Webanwendungen sehe auch ich als gesetzt an.
Was mich wirklich stört, ist nicht das einzelne Tool, sondern das Herangehen.
Wer Symfony nehmen will, soll es tun. Wer mit LESS, SASS, Grunt oder sonstigen Tools arbeiten möchte, soll es tun. Wer mit Jenkins seine Container für automatisierte Tests bauen will, der soll es tun.
Aber er sollte vorher ergebnisoffen prüfen, ob der Zusatzaufwand gerechtfertigt ist und man die Aufgaben nicht auch auf ganz andere, möglicherweise wesentlich schlankere Art lösen kann.
Diese Abwägung findet momentan einfach nicht statt. Die Diskussionen sind sehr einseitig und von Dogmen durchsetzt. Das kommt daher, dass man allen Ernstes Jobtitel wie „Software-Evangelist“ schafft.
Am 23. und 24. März fand in Jena das mittlerweile sechste eCommerce Camp statt. Auch bei meinem dritten Besuch, verlief die Veranstaltung im gewohnten Rahmen: Am Vorabend trafen sich viele der Teilnehmer nach der Anreise zum Plausch bei Bier und deftigem Thüringischen Essen in der Gaststätte zur Nöll in der Altstadt. Die eigentliche Veranstaltung fand am Freitag und Samstag Vormittag in der Ernst-Abbe Hochschule in Form einer Unconferenz statt.
Jena – Zeiss neben der Ernst Abbe Hochschule
Nach einem gemeinsamen Frühstück bildete sich die Schlange mit den Teilnehmern, die einen Vortrag oder einen Workshop vorbereitet hatten. Einer nach dem anderen trat auf die Bühne und stellte dem Saal sein Thema vor.
Die Einreichungen wurden thematisch sortiert und auf die Slots verteilt. Am Ende stand ein voller und interessanter Vortragsplan.
Unconference Programm
„Da muss der alte Mann jetzt mal selbst ran“
Im Vorjahr hatte mich der Mitveranstalter gefragt, ob ich nicht auch mal ein Thema vorbereiten möchte. In diesem Jahr nahm ich die Arbeit auf mich und habe einen Vortrag vorbereitet. Er ist betitelt „No KISS – we’re doing it wrong“ und handelt von Trends in der Softwareentwicklung, die ich für problematisch oder gar falsch halte.
Die Kernthese lautet, dass sich viele Trends etablieren, die Software sehr aufblähen, langsam und angreifbar machen und entgegen der Intention auch nicht für bessere Wartbarkeit und Wiederverwendbarkeit sorgen. Als Beispiele nannte ich u.a. fette Frameworks, unbedachter Einsatz von Libraries, Annotations, ORM, Metasprachen und zu viele Basistechnologien im Setup.
Da ich noch nie bei solch einer Veranstaltung vorne stand, war ich auch etwas nervös. Werde ich einen Hänger haben? Interessiert das Thema überhaupt jemanden? Da mein Vortrag etwas gegen den Entwickler-Mainstream gebürstet war war ich auch gespannt, ob meine Thesen in der Luft zerrissen würden. Zudem hatte ich kaum Zeit, mich seelisch vorzubereiten, weil ich gleich in den ersten Slot nach der Einführungsveranstaltung dran war.
Es stellte sich heraus, das meine Bedenken unbegründet waren. Mein Vortrag war flüssig, es waren ca. 20 Zuhörer im Raum, was für diese Veranstaltung gar nicht mal so wenig ist. Zum Ende des Vortrags kam es nochzu einer kurzen Diskussion über den einen oder anderen Punkt, aber alles in allem erntete ich viel Zuspruch, wie sich auch noch in einigen Gesprächen im Tagesverlauf zeigte.
Ein Teilnehmer meinte, dass er ähnliches in letzter Zeit häufiger gehört habe und die Kritik meist von älteren Entwicklern kämen und ob das Zufall sei. Meiner Meinung nach ist das kein Zufall, sondern es hängt damit zusammen, dass wir älteren Entwickler früher an Maschinen entwickelt habe, die sehr beschränke Ressourcen hatten. Der Rechner war immer zu langsam, hatte stets zu wenig Speicher und die Übertragungsgeschwindigkeit war immer langsam. Daher sind wir es gewohnt, auf Ressourcenverbrauch zu achten. Heutzutage spürt man zunächst keine Ressourcenknappheit. Daher ist es sehr einfach, eine Anwendung aus vorgefertigten Elementen „schnell zusammenzustöpseln“. Dass man ein Problem hat, merkt man erst, wenn unerwartet viel Traffic auf den Server einprasselt, aber dann liegt das Kind bereits im Brunnen.
Gutes Programm, spannende Gespräche
Das gute daran, den ersten Slot zu bekommen ist, dass man sich danach entspannt auf die Vorträge der anderen konzentrieren kann. Für mich aktuell einer der wertvollsten Vorträge war „MySQL Profiling“, den Andreas Ziethen von Scale hielt. Sein Vortrag setzte genau dort an, wo mein Wissen aufhörte. Nach einer Einführung in das Tool zur Auswertung von Datenbank Logfiles wurden einige Auswertungen von echten, aktuellen Problemfällen zusammen mit den Hörern vorgenommen – sozusagen Gruppendebugging.
Kontrovers diskutiert wurden die Vorschläge für eine neue Shoparchitektur, die Marcus Franke und Richard Burkhardt in der Session „E-Commerce Performance neu gedacht! Proof of Concept: Schnelle Webshops ohne Caching“. Der Wunsch, das Caching aus den Shops zu entfernen ist groß und Vorschläge dazu sehr willkommen, wie sich an recht vielen Hörern im Saal zeigte. Der präsentierte Prototyp, der eine Kategorieseite aus einem Datensatz von einer halben Million Artikeln in 0.4 Sekunden zeigte, basierte auf dem Konzept eines Application Servers, wie man ihn aus der Java Welt kennt. Aus dem Publikum kamen jedoch recht gewichtige Gegenargumente: Zweifel, ob PHP für lang laufende Prozesse stabil genug ist, hoher Ressourcenverbrauch und Fragen wie die Objektdaten im Speicher aktuell gehalten werden. Nach meiner Ansicht das stichhaltigste Argument war, dass der Showcase deshalb so schnell sei, weil alles, was einen echten Shop ausbremst (Framework, ungenutzte Features, Konfigurationsmöglichkeiten,…) nicht implementiert ist. Wenn man dasselbe mit plain PHP baut, kommt man vermutlich auf ähnlich schnelle Zeiten.
Zwar ist es nicht schön, wenn einem die eigene Arbeit so zerpflückt wird, aber die Argumente waren plausibel und der Ton kollegial. Ich finde es auf jeden Fall sehr gut, dass die beiden sich nicht nur Gedanken gemacht haben, sondern auch noch viel Zeit in einen Showcase investiert und das Ergebnis zur Debatte gestellt haben.
Ein Herz für Nerds
Das abendliche Unterhaltungsprogramm im Paradies Cafe habe ich in diesem Jahr nicht so ausgekostet, wie 2017. Ich war nicht so richtig in Feierlaune und mir schienen auch die anderen Konferenzteilnehmer in diesem Jahre etwas zurückhaltender. Das war aber nicht unbedingt von Nachteil, weil es der Konzentration am Samstag Vormittag zu Gute kam.
Simon Pearce von SysEleven zeigte, wie man mit Hilfe von Kubernetes und einigen einfachen Konfigurationsdateien in wenigen Minuten ein MySQL Datenbankcluster mit einem Master und drei Slave Nodes bauen kann. Bereits am Vortag hatte er demonstriert, wie ein Setup aus NGINX Webservers so aufgesetzt werden kann, dass bei Bedarf automatisch weitere Serverinstanzen gestartet und bei abnehmender Last wieder gestoppt werden können.
Kurz vor bevor ich zurück nach Berlin fahren wollte, bekam ich in einem sehr interessanten Gespräch nebenbei eine Vorführung eines begeisterten Shopbetreibers in Echtzeitprofiling seines Shops mit Tideways und eine Diskussion über den Umgang mit der Datenschutzgrundverordnung. Zu meiner Verblüffung erfuhr ich von einem mir bekannten Shop, der mittlerweile völlig auf die Speicherung von personenbezogenen Daten verzichtet. Das Shopsystem selber ist „clean“, so wie ich es von Bankenanwendungen kenne. Ich bin gespannt, ob sich so etwas rumspricht und durchsetzt.
Fazit
Dieses spontane Gespräch am Rand zeigt auf, was diese Veranstaltung in meinen Augen so wertvoll macht: Der spontane, offene und ehrliche Austausch über Probleme und Lösungen. Ich hoffe sehr, dass diese Veranstaltung auch in den nächsten Jahren fortgeführt wird.
Gerade macht die Aussage von George RR Martin, dem Autor von Game of Thrones, die Runde, dass er auf einem völlig veralteten Rechner schreibt (siehe BBC Artikel). Er nutzt Wordstar 4.0 auf einem Rechner unter MS-DOS.
Kopfschütteln und Lachen
Bei vielen wird er damit auf Missverständnis stoßen. In dem unten gezeigten Interview schütten sich die Zuhörer aus, vor Lachen. Er selber bezeichnet sich als Dinosaurier und bedient damit (auch optisch) das Klischee von dem alten Mann, der irgendwie stehen geblieben ist und den alten Zeiten nachtrauert.
Nicken und Zustimmung
Der Eindruck täuscht. Ich halte Martin nicht für rückständig, sondern für zielorientiert. Er fokussiert sich auf das Ziel, eine Geschichte zu schreiben. Dazu benutzt er das Werkzeug, das ihn am besten dabei unterstützt. Martin ist der Meinung, dass dieses alte System wesentlich besser dafür geeignet ist, als moderne Software auf neuen Rechnern. Als Begründung führt er vor allem die automatische Rechtschreibkorrektur an, die regelmässig seine Texte zerschreddert. Das führte im Internet zu wohlmeinenden Kommentaren, wie bei Office die Rechtschreibkorrektur auszuschalten ist. Diese Kommentare gehen aber eigentlich am Problem vorbei, denn Martin hat recht. Er ist in diesem Fall der Experte. Wer hier eindeutig nicht Experte ist:
Börsenanalysten, die Softwarefirmen bewerten
Marketing Spezialisten von Software Firmen
Produktmanager von Software Firmen
User Interface Designer bei Software
Die o.g. Personengruppen haben zum Ziel, ständig neuen Umsatz zu erzeugen, indem sie ständig neue Software auf dem Markt bringen.
Martin hingegen will nur ein möglichst effizientes Werkzeug zum Schreiben. Er sagt „I like Wordstar 4.0. It’s a word processor that does everything I need. And it does nothing else“ und bringt damit eine zunehmend problematische Entwicklung auf den Punkt:
Die digitalen Werkzeuge werden schlechter
Die Autokorrektur ist nur ein Beispiel unter vielen: Ständige Ablenkung durch aufpoppende Nachrichten, Update Meldungen, E-Mails, Twitter Nachrichten und so weiter. Permanente Nerverei durch Antiviren Software, Firewalls, Zwangsupdates, Bedienoberflächen, die alle paar Monate geändert werden, Daten die man nicht mehr lokal speichern kann, gültige URLs, die der Browser nicht akzeptiert, weil sie nicht mit www anfangen oder mit .com aufhören.
Zwang, Besserwisserei, Bevormundung, Überfrachtung, wohin man auch sieht. Und weil Computer mittlerweile in so ungefähr alles eingebaut werden, gibt es auch keine reifen Produkte mehr. Immer muss irgendwas upgedatet und ausgebessert und nachgerüstet werden. Junge Leute von heute wissen vermutlich gar nicht, dass man ein Produkt früher fertig entwickelt hat, bevor man es auf den Markt brachte.
In der Vergangenheit, haben uns Computer viel Nützliches gebracht: Bessere Produkte durch präzise Fertigung, Saubere Motoren und Heizungen durch bessere Steuerung, demokratisierung der Medienproduktion und so weiter.
Ich werde aber das Gefühl nicht los, dass sich die Entwicklung der Nützlichkeit vor einiger Zeit den Höhepunkt erreicht hat und nun eher wieder sinkt.
Gibt es neben Peak Oil vielleicht auch Peak Digital – den Zeitpunkt, ab dem es mit der Nutzung digitaler Güter wieder abwärts geht?
Nachdem ich mein kleines Spiel Colorflood für den Commodore 64 fertiggestellt hatte, lud mich Dr. Stefan Höltgen ein, darüber einen Vortrag an der Humboldt Universität zu halten. Gestern Abend war es dann soweit. Im Signallabor des Fachbereichs Medienwissenschaften sprach ich vor kleiner, aber interessierter Runde über die Entstehung des Spiels.
Ollmetzer erzählt...
Ich sprach von der Motivation, weshalb ich mich heuzutage (wieder) mit alter, einfacher Technik auseinandersetze, über Ziele und die Herangehensweise, sowie natürlich über die technische Umsetzung. Im Anschluss wurden dann noch einige Runden auf den vorbereiteten C64 und C128 gespielt. Den Abend ließen wir dann gemeinsam mit Fachgeprächen bei einem gemütlichen Umtrunk in einem nahegelegenen Restaurant ausklingen.
Vor ein paar Tagen habe ich mein Spiel colorflood für den Commodore64 veröffentlicht. Ein kleines, einfaches Casual Game. Ein paar Leute haben es auch schon gespielt und sich wohlwollend geäußert.
Eben finde ich es auf CSDB (Commodore Szene Database) – und zwar als „Crack“. Nicht dass ich etwas dagegen habe, dass mein Spiel dort zu finden ist – aber als Crack??? Cracks sind eigentlich Spiele, deren Kopierschutz geknackt wurden und dann mit einem entsprechenden Intro versehen wurden.
Mein Spiel hat keinen Kopierschutz. Man darf es kopieren. Das Programm liegt hier – bitte sehr. Ich habe sogar den Quellcode veröffentlicht, und zwar hier. Daraus einen „Crack“ zu machen ist, wie alte Omas vor den Bus schubsen: Sehr einfach, sehr blöde und spricht nicht gerade für einen guten Charakter.
Mannmannmann, das ist ja wie damals, als sich pubertierende 14 Jährige in der „Szene“ wichtig gemacht haben…
Vor zwei Wochen schrieb ich über das kleine Spielchen, dass ich für den Commodore 64 programmiere. Die Idee hatte ich bereits letzten Sommer. Das ganze alte Know-How über 6502 Assembler und die Systemarchitektur des C64 rauszukramen und sich wieder daran zu gewöhnen, Daten direkt durch Speicher, Prozessor und Videochip zu schieben hat etwas gedauert. Nun ging es dann aber doch erstaunlich schnell. Das Spiel ist fertig (Download: siehe unten).
Stumm ist dumm
Die Spielmechanik hatte ich vor zehn Tagen fertig und nun wollte ich noch eine kleine Titelmelodie einbauen. Komponiert habe ich auf meiner Audioworkstation mit dem genialen Reason von Propellerheads. Um die Noten auf den C64 zu übertragen und abzuspielen habe ich den Soundmonitor von Chris Hülsbeck verwendet, der 1986 in der 64er erschienen ist. Die Software gilt als der erste Musik Tracker. Die Abspielroutine und die Daten verbrauchen leider sehr viel Speicherplatz und Prozessorzeit, aber da das Programm sehr klein ist und die Melodie nur im Titel und nicht während des Spiels läuft, macht das nichts.
So siehts aus
Das Spielprinzip ist absichtlich simpel, die Grafik und die Melodie ebenfalls. Spaß macht es (mir) trotzdem.
Colorflood - Titelscreen
Farbwechsel von Braun zu Violett - Die Welle rauscht vorwärts
„Auch mal spielen?“
Alle Liebehaber des C64 sind herzlich eingeladen, Colorflood herunterzuladen und in ihre Spielsammlung aufzunehmen. Über Feedback freue ich mich natürlich auch.
Das Spiel ist Open Source; die Quelldateien und das fertige Programm (colorflood.prg) liegen auf GitHub:
Seit letztem Jahr treibe ich mich in Berlin regelmäßig auf diversen Veranstaltungen mit dem Thema Retrocomputing herum. Ich habe viele interessante und teils verblüffende Dinge gesehen, die man mit den alten 8-Bit Maschinchen machen kann. Ich fand heraus, dass es noch immer eine lebendige Szene für meinen Lieblingscomputer Commodore 64 gibt und noch immer neue Software für das über 30 Jahre alte Schätzchen erscheint.
Ich will auch mal wieder…
Im letzten Sommer – nachdem ich den Vortrag von Berthold Fritz über die Programmierung eines Spiels für die 8 Bit Atari Heimcomputer gehört hatte – nahm ich mir vor, auch mal wieder ein kleines Spielchen zu programmieren. Und zwar so richtig maschinennah in Assembler – wie man das damals meist getan hat.
Es muss nichts aufregend, originelles, großes sein. Irgendwas nettes kleines, was man gerne mal für 10 Minuten spielt. Berthold Fritz hatte sich an Boulderdash orientiert, aber von solchen Spielen gibt es gefühlt hunderte für den C64. Was also tun?
Als ich meinen Raspberry Pi das erste mal eingeschaltet hatte, stolperte ich über ein kleines, in Python programmierte Spiel, bei dem man ein buntes Spielfeld durch Farbwechsel einfarbig bekommen soll. Total simpel und einfach – aber ich saß wie gebannt davor und habe das tatsächlich elend lange gespielt. Das Prinzip macht Spaß und man benötigt weder bombastische Grafik noch umwerfenden Sound. Bingo – so machen wir es!
Proof of concept: colorflood in Basic
Den Algorithmus für den Farbwechsel habe ich zunächst in Basic programmiert, um zu überprüfen ob er wirklich so einfach ist, wie ich gedacht habe. Das Ergebnis war lauffähig, aber wie zu erwarten war auch unglaublich langsam. Immerhin – der Proof of Concept war erbracht. Den Programmcode habe ich bei Github hinterlegt.
Das Projekt colorflood ist mittlerweile in einem Stadium, in dem ich es auch mal zeigen kann. Es gibt:
Eine einfache Startseite. Los geht es mit Druck auf den Feuerknopf von Joystick 2.
Das Spielfeld wird aufgebaut
Die Farben werden zufällig gesetzt
Mit dem Joystick kann man die nächste Farbe auswählen und per „Feuer“ setzen.
Der Farbwechsel wird animiert angezeigt
Die Anzahl der Farbwechsel wird gezählt (ist aber noch nicht limitiert)
Es gibt einen Countdown (der aber noch nicht bei 000 den Level beendet)
Wenn das komplette Spielfeld eingefärbt ist, wird der Level beendet (und damit zur Zeit auch das Spiel)
Als nächstes werde ich die verschiedenen Beendigungen eines Levels und die Erhöhung des Schwierigkeitsgrades im nächsten Level programmieren. Danach Sound und zum Abschluss hoffentlich noch eine Titelmelodie.
Die vollständigen Projektsourcen sind hier zu finden:
Für ein kleines Projekt stand gerade vor der Aufgabe, Standbilder per Webcam aufzunehmen und zu speichern – aber nur, wenn sich etwas vor der Linse bewegt.
Das klingt zunächst reichlich kompliziert, aber mit den richtigen Werkzeugen ist es tatsächlich verblüffend einfach. Die Werkzeuge der Wahl sind:
OpenCV – Eine Funktionsbibliothek für Bild-, Videobearbeitung, Mustererkennung u.ä.
Den rechten Weg wies mir Matthias Stein mit seinem Artikel „Motion detection using a webcam, Python, OpenCV and Differential Images„. Die Bewegungserkennung funktioniert so, dass drei kurz nacheinender aufgenommene Bilder übereinandergelegt werden und daraus ein Differenzbild errechnet wird. Dort wo sich nichts verändert hat, ist das Differenzbild schwarz. Stellen, die sich verändert haben, werden weiß. Das führt zu recht eigenwilligen, geisterhaften Bildern, wie man in dem Beispielvideo auf Youtube sehen kann.
Die Lösung
Die Methode musste ich nun nur noch etwas ergänzen. Aus dem Differenzbild errechnet die OpenCV Methode countNonZero die Anzahl, der weißen Pixel. Falls dieser Wert oberhalb eines gesetzten Schwellwertes (sinnvollen Wert ausprobieren) liegt, soll das Bild gespeichert werden. Jetzt muss man nur noch dafür sorgen, dass das Ursprungsbild in Farbe vorliegt und nur zur Differenzberechnung in Schwarz/Weiss gewandelt wird. Et voilá…
Für die interessierten ist hier der Code:
#! /usr/bin/python
import time
import cv2
def diffImg(t0, t1, t2):
d1 = cv2.absdiff(t2, t1)
d2 = cv2.absdiff(t1, t0)
return cv2.bitwise_and(d1, d2)
print "Start Capturing"
cam = cv2.VideoCapture(0)
# Threshold for minimum movement
threshold = 130000
targetdir = './'
winName = "MovementIndicator"
cv2.namedWindow(winName, cv2.CV_WINDOW_AUTOSIZE)
# Read three images first:
colorimg = cam.read()[1]
t_minus = cv2.cvtColor(colorimg, cv2.COLOR_RGB2GRAY)
t = cv2.cvtColor(colorimg, cv2.COLOR_RGB2GRAY)
t_plus = cv2.cvtColor(colorimg, cv2.COLOR_RGB2GRAY)
start = time.time()
while True:
dimg=diffImg(t_minus, t, t_plus)
cv2.imshow( winName, dimg )
# save picture, when movement above threshold
print cv2.countNonZero(dimg)
if cv2.countNonZero(dimg) > threshold:
timestamp = round(time.time() - start)
filename = targetdir + str(timestamp) + ".jpg"
cv2.imwrite(filename, colorimg)
# Read next image
colorimg = cam.read()[1]
t_minus = t
t = t_plus
t_plus = cv2.cvtColor(colorimg, cv2.COLOR_RGB2GRAY)