Wir haben verloren

Bei meinem letzten Arbeitgeber, wo alles sehr groß und ambitioniert war, da veranstaltete eine junge Frau, die ohne Probleme meine Enkeltochter hätte sein können, für ihre Abschlussarbeit eine Umfrage zum Thema Nutzung sozialer Netzwerke durch ‚digital natives‘ vs. ‚digital immigrants‘, und sie fragte mich, ob ich ihr als Vertreter der letztgenannten Gruppe fünf Minuten meiner Zeit opfern würde, um ein paar Fragen zu beantworten.

Nun kenne ich mich, was das Internet betrifft, allein schon brotjobbedingt mit echt vielen Dingen aus, aber wenn von wichtigen Menschen über die Sozialstruktur des Netzes philosophiert wird, dann halte ich mich meistens raus… und deshalb hatte ich auch keine Ahnung von den Begriffen ‚digital natives‘ oder ‚digital immigrants‘.

Die ’natives‘, so erfuhr ich, das sind diejenigen, für die das Netz zu ihrer bisherigen Lebenszeit schon immer existierte. Es war nie nicht da, sie sind damit aufgewachsen. Die ‚immigrants‘ hingegen mussten sich erst daran gewöhnen, sie kannten es in ihrer Kindheit oder Jugend nicht, weil es da einfach noch nicht da war.

Aus sicherlich falscher Eitelkeit heraus störte mich diese Klassifizierung damals.

Es müsste, so meine Argumentation, eine dritte Gruppe geben – diejenigen, die zum Zeitpunkt ihres Erwachsen-Werdens am Aufbau des Netzes beteiligt waren. Diejenigen, die den ‚digital natives‘ ihren Sandkasten, den sie nun für die Welt halten, gebaut und zum Spielen hingestellt haben.

Ich war mit dem Akustikkoppler (und später mit dem Modem) in Mailboxen unterwegs, hatte einen eigenen Point im Fidonet, hackte PPP-Treiber für meinem A3000UX, starrte wie gebannt auf die ersten vom CERN und einigen wenigen Universitäten ausgelieferten Webseiten, damals noch via Terminalzugang über Lynx. Ich war einer der ersten, die eine Homepage hatten, und meine damalige Band war eine der ersten, die ihre Werke als mp2 (mp3 war noch nicht erfunden) kostenlos im Netz offerierten, lange vor der Entstehung von Creative-Commons-Lizenzen; ich beteiligte mich an Diskussionen im usenet… Ich war da. Ich war dabei. Ich hab dieses Netz mit aufgebaut. Ausgerechnet ich war jetzt also ein ‚immigrant‘, der erstmal damit klar kommen musste, welches für ihn fremde Wunderwerk der Technik ihm da vor die Füße geschmissen wurde? Das erschien mir als falsch.

„Na ja“, meinte meine Interviewpartnerin, „das leuchtet mir ein. Vielleicht könnte man Leute wie Dich als ‚digital builder‘ bezeichnen“.

Ein Arbeiter, von mir aus, das war auf jeden Fall näher an der Realität.

Wenn ich mir die Sache heute wieder durch den Kopf gehen lasse, dann muss ich feststellen, meine Klassifikation hat sich wohl in den letzten zwei Jahren geändert. Vom Arbeiter bin ich zum Auswanderer geworden. Noch nicht vollständig, aber immer mehr. Ich möchte mit diesem Netz immer weniger zu tun haben. Ich kann nicht ganz los lassen (noch nicht?), aber wenn wir mal hier den weit verbreiteten Fehler machen, das Internet als Raum zu begreifen, dann ist es ein Raum, der mich mehr und mehr anwidert, und in dem ich meine Zeit als verschwendet ansehe.

sklib-170203-180617

Wie konnte es so weit kommen?

Als ‚das Internet‘ für den Privatmenschen so richtig losging (das muss so die Zeit zwischen 1998 und 2006 gewesen sein), da projizierten eine Menge unterschiedliche Menschen eine Menge unterschiedliche Wünsche und Hoffnungen auf dieses zarte neue Pflanze, die da gerade spross und gedieh.

Eine Plattform, um Menschen grenzübergreifend Information zugänglich zu machen, das hörte sich an, als wäre eine Utopie wahr geworden. Nicht wenige dachten (und ich gestehe, ich gehörte dazu), die Menschheit würde durch das Internet besser werden und sich weiter entwickeln.

Nehmen wir nur mal die Musik – endlich gab es die Möglichkeit, interessierten Menschen abseits vom Mainstream neue Musik ohne komplizierte Vertriebskanäle zur Verfügung zu stellen. Label? Plattenfirmen? Verträge? Brauchen wir nicht. Wir stellten unsere Werke frei verfügbar ins Netz und boten bei Gefallen die Möglichkeit an, eine richtige CD mit schönem Booklet zu bestellen, oder uns etwas zu spenden… so musste das funktionieren; alte, überkommene Strukturen aufbrechen, und neues erschaffen und dabei andere Künstler kennenlernen, einen aktiven Austausch von Inspiration etablieren. Das klang richtig gut, richtig verheißungsvoll.

Wie so Vieles.

Inzwischen schreiben wir das Jahr 2017, und wir haben Trump, Front National und die AfD. Und auch wenn gerade zig Institute zig teure Studien durchführen um herauszufinden, ob das Internet darauf wirklich so einen großen Einfluss hatte, kann ich das ganze hier gerne mal extrem kostensparend abkürzen: Ja, hatte es, natürlich. Man muss schon ziemlich merkbefreit sein, um das nicht zu erkennen.

sklib-170131-115758

Mark Zuckerbergs große Dauerwerbesendung hat jedem besorgten Bürger, der vor 10 Jahren nur für sich allein vor seiner Fototapete sitzend gegen die Juden und/oder Kanaken und/oder Neger und/oder Europa schimpfte plötzlich das Gefühl gegeben, Teil einer großen und wichtigen Bewegung zu sein, in der alle Menschen eine ähnliche Meinung haben (und wenn nicht, dann allenfalls zu einer kleinen Gruppe von Gutmenschen gehören, die es zu bekämpfen gilt).

Machen wir uns nichts vor, diese Leute gab es schon immer. Aber dass sie zusammen gefunden haben, in ihren traurigen Ansichten zigtausendfach bestärkt wurden und nun einen veritablen gesellschaftlichen Faktor darstellen, das haben wir in der Hauptsache unseren „sozialen“ Netzwerken zu verdanken. Dass sie in einer Filterbubble leben, das wissen sie nicht. Und was Fake News sind, schon mal gar nicht. Diese Menschen hatten früher ihre Bildung aus der Bildzeitung, da ist es nicht verwunderlich dass sie die Mär von Vergewaltigungen in Schwimmbädern durch organisierte Flüchtlingstrupps für bare Münze nehmen. Um zu begreifen dass sie instrumentalisiert und verarscht werden, müssten sie in der Lage sein, die Metaebene zu sehen, und diese Kompetenz haben sie nie erlernt.

Das ist es, was aus dem Netz wirklich wurde: Gift für die Massen. Ein Nährboden für Scharlatane und Hetzer, die hier jede Menge wehrlose Opfer finden… und eine einzige riesige virtuelle Klowand, bei deren Anblick sich jeder Vollpfosten denkt, sie gäbe ihm das Recht, ungefiltert und unter Missachtung jeglicher Regeln des Anstandes und der Vernunft Äußerungen darauf zu schmieren, die er in einem realen Gespräch einem realen Menschen niemals ins reale Gesicht sagen würde.

Und dabei geht es nicht mal ’nur‘ um Politik. Es geht ganz allgemein darum, wie man sich benimmt, Oder eben nicht benimmt. Blödsinnige youtube-Kommentare, Petabytes an Spam die jeden Tag verschickt werden, so genannte SEO- und Content-Marketing-Spezialisten und sonstige ganze Berufszweige die sich um die Frage herum gebildet haben, wie man am besten eine Suchmaschine verarscht, Unmengen an stumpfsinnigster Konsumgeilheit und Werbung, die sich als Fashion- und Lifestyleblogs tarnt, Botnetzwerke, Zensur, Verschlüsselungstrojaner, Klarnamenpflicht auf Google+ (kennt das noch wer?), der Niedergang der Piraten… ich könnte ewig so weiter machen. Das Internet ist sowas wie ein Universal-Toolkit geworden, mit dem sich alle Erungenschaften des Zeitalters der Aufklärung wirksam bekämpfen lassen.

Und natürlich ist es mit meinem größten Antrieb, der Musik, auch den Bach runtergegangen. Als wir „Grounded“ veröffentlichten, da hatte man noch eine minimale Chance, auf Plattformen wie Jamendo wahrgenommen zu werden, und es gab noch revolutionäre und vielversprechende Formate wie Garageband.com. Nun ja, letzteres wurde von myspace gekauft und gegen die Wand gefahren (ehe myspace selbst in der Bedeutungslosigkeit versank), und Jamendo ist nur noch ein trauriger Witz, auf dem Leute, die kein Instrument spielen können, zwanzigtausend generische House-Tracks und Ambient-Mixe von anderen Leuten die kein Instrument spielen können, herunterladen und bejubeln (ich wage übrigens an dieser Stelle mal die Prognose, dass Jamendo 2017 den Weg von Ipernity gehen wird – diese andere französische Plattform, die so hoffnungsvoll gestartet war, aber ich schweife ab).

Sei das alles wie es wolle, ich habe dieses Netz mit aufgebaut, weil ich so große Hoffnungen hatte. Als ‚digital builder‘ muss ich zugeben, wir haben versagt. Die Technik ist weiter als die Menschen es sind. Mal wieder. Das hätte allen Beteiligten bewusst sein müssen. Man hätten früh voraussehen können, dass auch die Rattenfänger ins Netz kommen würden, die Trumps und Petris, die Content-Marketing-Menschen, die Pseudo-Visonäre, die Absahner, und die Leute mit der Bildung aus der Bildzeitung. Jetzt ist es zu spät. Sie sind alle da, und sie machen was sie wollen, sie machen das Netz kaputt und es gibt offensichtlich kein Rezept dagegen. Und wenn es nur das Netz wäre, dann wäre alles noch ok, aber nein, sie machen die Welt kaputt. Gratulation, Internet, Du hast dabei geholfen, eine Welt zu erschaffen, in der man jeden Morgen Angst haben muss, dass ein durchgeknallter Faschist mit einem toten Hamster auf dem Kopf den dritten Weltkrieg auslöst.

Auch wenn das alles gar nicht danach klingt, ich bin kein negativer Mensch, wirklich nicht. Ich bin, wenn man bedenkt was in den letzten Jahren alles passiert ist, ziemlich glücklich mit meinem Leben. Aber ich hatte, wie gerade angedeutet, so einige persönliche Schicksalsschläge zu verarbeiten, und ich konnte mir nicht aussuchen, ob ich sie erleiden möchte oder nicht.

Ob ich mich im Netz von Hass und Dummheit deprimieren lassen möchte, das hingegen kann ich mir aussuchen, und gerade ist es sehr wichtig für meine geistige Gesundheit, mich dagegen zu entscheiden. Ich bin es leid, was aus dem Netz geworden ist. Das ist auch der Grund, warum hier lang nicht so viel von mir zu lesen war, wie ich ursprünglich vor hatte. Klar habe ich programmiert und fotografiert und getextet und musiziert, aber die Zeit in der realen Welt war und ist mir viel wichtiger als die Beschäftigung mit dieser ausser Kontrolle geratenen Hassmaschine namens Internet.

Es tut mir sehr leid für die Leute, die meinen künstlerischen und/oder menschlichen Werdegang verfolgen und das Interesse nie aufgegeben haben, und die auf neuen musikalischen Output von mir warten. Ich verspreche, er wird kommen, ich arbeite aktiv daran. Und ihr seid mir auch nicht wurscht, sonst würde ich diesen ganzen Artikel hier gar nicht schreiben, ich möchte nur, dass ihr mich versteht… warum ich mich zurückziehe, warum ich die Wandlung vom digital builder zum digital emigrant vollziehe.

Der Grund ist, um das noch mal ganz deutlich zu machen:

Wir haben verloren. Das Netz ist wenn noch nicht vollständig kaputt dann doch todkrank, und es hat in den letzten Stadien seiner Krankheit ein Monster nach dem anderen hervorgebracht. Es wird höchste Zeit für ein neues Netz.

Oder wer weiß. Vielleicht sind wir ohne einfach besser dran.

sklib-170201-155025

P.S. / Update: Inzwischen wurde der Artikel auch von irgendjemandem auf Twitter geteilt, der eine größere Leserschaft hat (nicht wirklich ein Kunststück) – und schon melden sich netzaffine Leute mit irgendwas mit Tux im Twittername zu Wort und bescheinigen mir, ich sei halt „zu doof“, meinen Newsstream zu filtern. Jahaa, alles sehr erwachsen. Womit aber bewiesen wäre, dass man nicht bei Trump, afd & Co. nachschauen muss, um Menschen zu finden, die sich im Netz nicht benehmen können.

Man muss nicht mit mir einer Meinung sein oder die Dinge genau so sehen wie ich. Man kann auch dagegen argumentieren. sleeksorrow macht das beispielsweise in den Kommentaren, und ich schätze ihn sehr.

Man muss noch nicht mal meinen Text lesen und seinen Sinn erfassen können.

Aber eine Meinung nicht teilen (oder verstehen) können und deshalb denjenigen der sie äußert bequem in 140 Zeichen als blöd hinstellen… naja… äh… füttere ich gerade Trolle? Ja, mach‘ ich wohl. Würde ein Filter helfen? Ja. Wäre die Welt besser wenn es diesen Filter nicht bräuchte? Aber auf jeden Fall.

Was zu beweisen war.

Mega-Macbook-Upgrade für 16€ gefällig?

(tl;dr: Langsam gewordene Macbooks kriegt man u.U. sehr einfach wieder fit und schnell, und man sollte tunlichst nicht alles befolgen, was im Web an Tips und Tricks verbreitet wird)

Mit meinem derzeitigen Arbeitspferd, einem Macbook Pro 15″ Retina aus dem Jahre 2012, verbindet mich eine ganz besondere Beziehung.

Zuerst wäre da die Tatsache, dass ich es bekam, als ich meine Stelle als CTO bei Vukee Games bzw. united toy antrat (ja, die Seite gibt’s immer noch, und der Typ mit dem lila Kopftuch, das bin ich). Ungelogen war das einfach der beste Job, den ich je hatte. Mehr darüber habe ich schon früher hier geschrieben, es sei nur kurz zusammengefasst: Es war großartig und irrsinnig produktiv, wir haben wundervolle Sachen erschaffen, ich hatte wirklich nur mit netten und sympathischen und ausgesprochen fähigen Leuten zu tun, ich hatte Homeoffice und freie Zeiteinteilung und trotzdem haben wir teilweise Nächte lang im tiefsten Schwabenland vor dem Kaminfeuer vor uns hin gecodet ohne dass mir das irgendwas ausgemacht hätte… und ich möchte diese Zeit um nichts in der Welt missen.

Coding @ Tobi's, Vukee-Style!
Coding @ Tobi’s, Vukee-Style!

Von aller Vergangenheits-Verklärung abgesehen war das Macbook Pro leistungsmässig schlicht eine Offenbarung… insbesondere im direkten Vergleich: In meiner vorherigen Job waren Entwickler grundsätzlich mit der grottigstmöglichen Hardware abgespeist worden, und der so genannte CTO achtete mit Argusaugen darauf, dass ja kein niederer Entwickler eine schnelle Festplatte oder mehr Speicher bekam. Das ist jetzt Ewigkeiten her, aber ich erinnere mich noch immer sehr genau daran, wie ich regelmässig eine halbe Stunde warten durfte, bis einmal das Projekt durchcompiliert war (und entsprechend minutenlang für kleine Codeänderungen). Klar, dass so die Produktivität litt und niemand zufrieden war; die goldene Regel, dass man Entwickler mit vernünftigem Werkzeug ausstatten muss, wenn man vernünftige Ergebnisse haben möchte, hatte sich zu dem Zeitpunkt noch nicht überall herumgesprochen.

Auf jeden Fall… der Umstieg von einem vollständig untermotorisierten 13″ Macbook mit langsamer 250GB-Festplatte und 4GB Speicher zu einem MacbookPro mit 512GB-SSD und 16GB Speicher war ziemlich unglaublich.

Die Entscheidung fiel mir also leicht, das Gerät nach dem Niedergang von Vukee Games zum Restwert zu kaufen und in meinen Besitz übergehen zu lassen.

Immer dabei: Das Vukee-Book, hier im Hundehaus im Reinhardswald anno 2014...
Immer dabei: Das Vukee-Book, hier im Hundehaus im Reinhardswald anno 2014…

Nur… in den letzten anderthalb Jahren war ich immer weniger begeistert von dem Gerät, und jetzt erst ist mir klar, was genau der Auslöser war: Das Ding wurde ganz einfach immer langsamer, und zeigte stetig mehr seltsame Ausfälle.

So glich die Arbeit mit Logic (meiner bevorzugten DAW) mehr und mehr einem Glücksspiel… irgendwann in einer Aufnahmesession hängte sich das Ding garantiert so auf dass ein Neustart fällig war. Sehr schlecht, insbesondere, wenn man mit mit mehreren Leuten Musik macht. Einmal gab ich auf der K-Burg ein kleines Privatkonzert, nur ich und ein handverlesene Gäste als Publikum, und auch da blieb der Rechner mittendrin hängen, obwohl er nichts anderes zu tun hatte, als mir das Software-Klavier von Native Instruments zur Verfügung zu stellen. Sehr, sehr ärgerlich und peinlich, wenn man gerade voll in die Tasten haut und nichts mehr aus den Lautsprechern kommt.

Auch die Arbeit mit Lightroom wurde ätzender und ätzender. Bilder brauchten Zeiten im zweistelligen Sekundenbereich bis sie endlich geladen waren, und bei alledem liefen sämtliche Lüfter grundsätzlich immer auf Hochtouren, auch für die einfachsten Aufgaben.

Da ich ein Software-Mensch bin, dachte ich bei der Ursachenfindung immer nur an Software… sowohl Lightroom als auch Logic als auch Mac OS selbst waren in den letzten Jahren größer und resourcenhungriger geworden. Da Apple eh inzwischen ziemlich viele „strategische Entscheidungen“ getroffen hatte, mit denen ich (als ein Mensch, der zu der Plattform kam, als MacOS noch NextStep hieß) überhaupt nicht zufrieden war*, war es ein leichtes für mich, alles auf Apple und die zig MacOS-Updates zu schieben, die in der letzten Zeit ihren Weg auf das Macbook gefunden hatten.

Tja, und vor einer Woche dann hatte ich die Nase vollständig und gestrichen voll, als mal wieder alle Lüfter am Anschlag liefen und Lightroom vor sich hinkroch und alles so überhaupt keinen Spaß mehr machte… und ich fühlte mich angespornt, doch mal den Grund dafür rauszukriegen.

Ein Blick auf die Aktivitätsanzeige brachte zutage, dass der kernel_thread jede Menge Last auf dem System erzeugte. „Super, Apple, Steve dreht sich im Grab“, dachte ich mir und vollführte eine kleine Internet-Recherche, die zu Tage brachte, dass so einige Leute das gleiche Problem haben.

Wie sich herausstellt, erweckt der kernel_thread den Anschein, CPU-Last zu erzeugen, wenn er, bzw. seine Erweiterung IOPlatformPluginFamily, aus irgendwelchen Gründen den CPU-Takt drosselt.

Diverse Seiten wie z.B. diese hier oder diese hier nehmen sich des Problems an, indem sie empfehlen, Teile der IOPlatformPluginFamily Kernel-Extension oder gar die gesamte Extension zu löschen.

Etliche youtube-Videos von jungen und hippen Mac-Jüngern, die nicht die allergeringste Ahnung haben, wovon sie reden, empfehlen vollmundig das Gleiche und tun dabei so als ob es ihre Idee gewesen wäre, was auf youtube anscheinend so üblich ist.

Wie dem auch sei… ein derartiges Vorgehen führt dazu, dass der OS X Kernel die Geschwindigkeit nicht mehr drosselt. Sollte die Kiste zu heiß werden, so greift zwar immer noch, etliche Schichten tiefer, der SMC (System Management Controller) und erzwingt ein Abschalten des Systems… das passiert aber erst, wenn es so richtig, richtig, richtig wahnsinnig heiß wird.

An dieser Stelle schon mal einen Rat an den geschätzten Leser:

Tun Sie dies nicht!

Schrauben Sie stattdessen Ihr Gerät auf (mit einem Pentalobe 1.2mm Schraubenzieher, kostet 5 Euro), entfernen Sie die Bodenplatte, bewaffnen Sie sich mit Druckluftreiniger (1 Dose, kostet 11 Euro) und schauen Sie mal rein.

Mit ein bißchen Glück sieht es da drin so ähnlich aus wie bei mir, nämlich so:

Staub, alles voller Staub!
Staub, alles voller Staub!

Ich war auch erstmal ziemlich schockiert. Ich gebe eigentlich sehr gut acht auf meine Hardware, und von außen sah das Macbook immer gepflegt und beinahe wie neu aus.

Aber von innen nicht. Diverse Kaminfeuer-Sessions und die Tatsache, dass wir hier auf der K-Burg mitten im Wald wohnen und die Wohnung prinzipienbedingt sehr staubig ist, haben dem armen Macbook mehr zugesetzt als ich jemals vermutet hätte.

Die hier zu sehenden Unmengen von Staub hatten sich hauptsächlich in allen Auswegen der Lüfter festgesetzt und verhinderten damit ziemlich effizient, dass die Lüfter ihren Job wahrnahmen.

Das Ergebnis davon? CPU und GPU wurden schon bei den kleinsten Aufgaben sehr heiß, die Lüfter wurden schneller und schneller betrieben (da sie ja bei langsamer Umdrehung nicht mehr länger das taten was sie sollten) um die Bausteine zu schützen, und irgendwann fängt der Kernel an, die Hardware durch Drosselung des Tatkes vor langfristigem Schaden bewahren zu wollen.

Man kann das ziemlich gut sehen, indem man im Terminal

sudo pmset -g thermlog

eingibt.

Wann immer der Kernel, respektive IOPlatformPluginFamily, der Meinung ist, die CPU drosseln zu müssen, erscheint da etwas in der Art von

2016-10-21 15:27:04 +0200 CPU Power notify
CPU_Scheduler_Limit  = 100
CPU_Available_CPUs  = 8
CPU_Speed_Limit  = 62

…und das heißt so viel, wie (in diesem Fall): Die CPU läuft in diesem Moment mit 62% ihrer eigentlichen Geschwindigkeit. Das ging in meinem Fall runter bis zu 26%, und spätestens dann ist klar, warum sich die Maschine so elend langsam anfühlt.

Nach einer einstündigen Reinungssession mit Druckluftspray freut es mich sehr, berichten zu können, dass das Macbook wieder läuft wie am ersten Tag.

Die Lüfter drehen erst bei hoher Last richtig laut, ansonsten sind sie kaum zu hören, und auch ein Neuberechnen von 12000 JPG-Vorschauen in Lightroom mit gleichzeitigem RAW-Editieren können das Teil nicht aus der Ruhe bringen.

Tja, und da wollte ich heute abend beim Apple-Event schon schauen, ob ich mir nicht ein neues Macbook zulegen möchte… ich schätze, ich habe ein paar 1000 Euro gespart…


*wie z.B. das Verkaufen von Modeaccessoires mit Gold- und Diamantarmbändchen an bemitleidenswerte Gestalten die sowas nötig haben, der Tod von Aperture (und das allmähliche Sterben sonstiger Unterstützung von Fotografen und sonstigen Kreativen), das unglaublich nervige Bevormunden von Entwicklern mit AppStores und Zertifikaten und verifiziertem Entwicklertum und Review-Willkür undsoweiter undsofort…

Wolves!

Ich hab mich am Wochenende hingesetzt und ein kleines Spielchen geschrieben (eigentlich wollte ich ja Musik machen, aber irgendwie hat es sich anders ergeben).

„Wolves“ ist ein Mini-Strategiespiel für den Apple II (besser gesagt, die Minimalanforderung ist ein Apple II+ mit 5.25″ Diskettenlaufwerk).

Wer gerade keinen Apple II zur Hand hat, der kann sich mit einem Emulator behelfen. Apple //jse zum Beispiel, der ist vollständig in Javascript geschrieben und läuft im Browser…

Man hat es nicht leicht als Wolfsrudel...
Man hat es nicht leicht als Wolfsrudel…

Ziel ist es, einem Wolfsrudel bei der Jagd zu helfen, und das ganze einigermaßen strategisch so geschickt zu machen, dass die Wölfe 10+ Level mit steigendem Schwierigkeitsgrad überleben.

Implementiert wurde „Wolves!“ in einem Zeitraum von 15 Stunden nach einem tollen und hippen neuen Vorgehensmodell bei der Softwareentwicklung, das bald jedes Startup einsetzen wird, wenn es einigermaßen ernst genommen werden möchte, und zwar IDSE.

IDSE ist die Abkürzung für „Implementier den Scheiss einfach!„, und ich werde irgendwann einmal, wenn die Welt reif dafür ist, mehr darüber erzählen. Nur soviel sei als Spoiler schon mal gesagt: Es gibt keine Retros, keine Reviews, keine Plannings, keine Standups, keine Storypoints, keine Stakeholder, keine Pullrequests, keine DODs, keine DORs, kein PP und kein XP und keinen Plan, der größer ist als das, was an zwei durchgemachten Nächten in einen Kopf passt.

Aber zurück zum Spiel.

Ich bekam die Idee zu „Wolves!“, als ich Buba und ihren Freundinnen Liza und Schnitzel beim sich-durch-den-Wald-bewegen und bei der Interaktion miteinander beobachtete.

Eigentlich wollte ich es auf dem BBC Micro implementieren, doch bei diesem flog mir leider ein Entstörkondensator des (jetzt auch schon 30 Jahre alten) Netzteils um die Ohren und deshalb ist er erstmal ausser Betrieb, und mein guter alter Apple IIGS sprang stattdessen als Entwicklunsgplattform ein.

Doch jetzt erstmal genug der Worte,

 Hier gibt’s das .DSK Image zum Runterladen.

Viel Spaß beim Spielen.

P.S.: Leider hat nicht jede moderne Tastatur einen Ziffernblock, darum können die Wölfe auch, was nicht in der Anleitung steht, mit

UIO
JKL
M,.

gesteuert werden… J, I, L und „,“ bewegen die Wölfe dabei nach links, oben, rechts und unten, und die anderen Tasten dementsprechend diagonal.

 

Pferdesachen und Nicht-Pferdesachen

Irgendwie ist das ganz erstaunlich mit Pferden.

Ich meine, je mehr Zeit man mit Pferden verbringt, desto mehr wirken ausgesprochene Nicht-Pferdesachen unwirklicher, unsinniger und unwichtiger.

Softwareentwicklung im Team zum Beispiel, und all die damit verbundenen Probleme mit Kommunikation, Egos, unterschiedlichen Herangehensweisen, undsoweiter, undsofort.

Eine Sache kann nur schwer noch mehr Nicht-Pferdesache sein.

Oder ob iAndroid besser ist als GoogleOS. Paradebeispiel für eine ganz oberkrasse Nicht-Pferdesache.

Unmittelbar nach einem Besuch bei den Pferden heute mittag habe ich die ganzen nervigen Nicht-Pferdesachen, mit denen ich mich in den letzten Wochen immer wieder auseinandersetzen musste, beinahe vollkommen vergessen.

Ein schöner Zustand.

SKPH0401

Hoffen wir, er hält noch ein bisschen an.

Warten auf die Revolution

Sebastian C. Müller und Thomas Fritz von der Fakultät für Informatik der Universität Zürich haben, so ist meine leise Hoffnung, etwas ganz Großartiges getan.

Und zwar haben sie ein Papier geschrieben, das hoffentlich irgendwann in der Zukunft zur Revolution führen wird. In diesem Paper schlagen sie – grob zusammengefasst – vor, bei Softwareentwicklern per Biometrie (sprich, EKG, EEG & Co.) zu messen, ob sie gerade vernünftige Arbeit machen oder nicht.

Bis jetzt war der Prozess ja langsam und schleichend.

Leute, die nicht programmieren können oder wollen, suchen seit gefühlten Jahrhunderten nach immer neuen Wegen, um Leute, die programmieren können und wollen, effizienter und kostengünstiger Geld für sie verdienen zu lassen. Da gibt’s dann alle paar Jahre eine neue Methodik, die alle bitteschön ganz toll zu finden haben. Soweit, so bekannt.

Aber Softwareentwickler-Milchkühe mit Elektroden an Hirn und Händen zu verdrahten, um dann per Biometrie rauszukriegen ob sie gerade ordnungsgemäß leckere Früchte am High Performance Tree erschaffen oder eher in nem extended Biometrics-Peer-Review nochmal so richtig rangenommen werden müssen, das hat eine ganz neue Qualität.

Ich hoffe, da wird weiter geforscht. Denn irgendwann muss das zwangsweise dazu führen, dass die Leute sich erheben, ihre Fesseln abstreifen, und die Revolution ausrufen.

Na, wie wär’s?

(bin mir übrigens nicht sicher, ob ich über solche Dinge hier wirklich weiter schreiben möchte. Da hab ich am Wochenende so schöne Musik gemacht, und dann sowas…)

Stephans Hypothese der mehrfachen Unvollständigkeit

Hat ein System X den gleichermaßen offensichtlichen wie immanenten Fehler Y, so finden sich innerhalb einer Zeit t garantiert n Menschen, die vollkommen überzeugt verkünden: „Blödsinn! Das hat mit X überhaupt nix zu tun! Wer X so verwendet, dass Y auftritt, der macht es einfach falsch“.

Wobei n umso größer wird, desto offensichtlicher und nerviger Y ist, und t sich mit der Marktdurchdringung von X asymptotisch verkürzt.

Wollt ich nur mal gesagt haben.

 

Der lange Weg zu LuaHack

Ich bin mir ja immer noch nicht sicher, ob und wie ich Programmier-Topics auf diesem Blog behandeln soll.

Bislang habe ich diese Seite von mir in der Öffentlichkeit eher nicht so gezeigt¹, die Musik war (und ist btw immer noch) wesentlich wichtiger, und über das Programmieren muss ich dank Scrum & Co. eh schon mehr reden als mir eigentlich lieb ist.

Und selbst, wenn ich dazu übergehen sollte, hier über Programmierthemen zu fabulieren… in welcher Tiefe soll ich es tun? Eher generell, so dass es jeder versteht? Oder bis zur Zeitkomplexitäts-Analyse eines Shadow-Casting-Algorithmus? Wer liest hier überhaupt mit? Wer ist interessiert daran?

Trotzdem ist es natürlich eine wichtige Seite von mir, und ich programmiere durchaus nicht ’nur‘, um das Geld zum Musik machen zu verdienen, sondern auch zum Spaß. Gerade (bzw. seit längerer Zeit schon) bastle ich beispielsweise an einem Spiel, das in gleich zweifacher Hinsicht ein Novum sein dürfte.

Denn erstens handelt es sich um das meines Wissens erste rogue-like, das nativ für RISC OS entwickelt wird.

Und zweitens ist das Teil vollständig in Lua implementiert.

Wie es zu alledem – RISC OS, Lua und Roguelikes – kam, das ist eine recht interessante, lange und komplexe Geschichte, für die ich etwas weiter ausholen muss… tja, und ich denke, das mache ich einfach mal, und schaue, was die Reaktionen so sind, und dann schauen wir wie es weiter geht.

Thanks For The Memories

Den besten Brotjob² meines Lebens hatte ich nämlich 2012-2013.

Und zwar war ich zu dieser Zeit CTO bei einer feinen, kleinen Mobile-Spiele-Schmiede. Und weil wir sehr wenige Leute (sprich: sieben) waren, hatte ich gleichzeitig eine sehr aktive Rolle in der Entwicklung (sprich: sicher 80% unseres Codes kamen von mir, trotz des hochtrabenden Titels³).

Was daran so toll war?

Nun, zum einen durfte ich mir meine Zeit frei einteilen und von zuhause aus arbeiten. Und, ja, tatsächlich, das funktionierte, und zwar sehr gut.

Leider befindet sich Deutschland im Bereich Home Office noch immer im finstersten Mittelalter, und vielerorts herrscht mit gespenstischer Selbstverständlichkeit die Idee vor, wenn man nur genug Leute zusammen in ein lärmiges Büro sperrt und sie von morgens bis abends mit Meetings und Spielchen malträtiert, dann werden sie sich schon irgendwann ganz arg dolle zusammengehörig fühlen und mehr und bessere Arbeit machen als wenn man ihnen die individuelle Freiheit und Ruhe ließe, die sie als Geistesarbeiter eventuell benötigen könnten.

Mein damaliger Chef, dem ich bis in alle Ewigkeit dankbar sein werde, hatte die Weitsicht, das anders anzugehen, und das zahlte sich aus.

Obwohl 2012 ein Jahr der derben Schicksalsschläge war (mein Vater erlitt im August einen Schlaganfall und starb schließlich drei Monate später an den Folgen, während meine Mutter alles unternahm, um ihm schnell nachfolgen zu können), entstanden in dieser Zeit drei neue Spiele – zwei davon mit einer von Grund auf neu & selbst entwickelten Sprite-Engine, ein anderes unter einem mir bis dahin nicht bekannten Framework (Corona) mit einer mir bis dahin nicht bekannten Programmiersprache (Lua) –, sowie zwei Prototypen für ein weiteres Spiel und eine sehr hübsche Audio-App, ausserdem koordinierte ich unsere externen Mitarbeiter, unsere Praktikanten und alles was sonst noch so alles daran hing. Und das alles ohne Probleme, und ohne, dass jemals Dinge unerledigt liegen blieben.

Tja, und zum anderen entwickle ich eh gerne Spiele, einfach so, zum Spaß, und zur Entspannung. Tatsächlich hatte ich schon während meines vorherigen Brotjobs damit begonnen, nach Feierabend wild drauf los zu entwickeln, als Ausgleich für alles, was bei meinem damaligen Brötchengeber falsch lief (s.o.)

Als mir also die Gelegenheit geboten wurde, das vollends zu meinem Beruf zu machen, griff ich ohne zu zögern zu.

Wolken am Horizont

Ich schreibe das alles in der Vergangenheit, weil es leider nicht hielt. Wir hatten uns und den Spielemarkt überschätzt… zwar hatten wir ein bis zwei kleine Hits gelandet, aber das reichte auf Dauer nicht, um uns über Wasser zu halten. Die Werbeeinnahmen brachen links und rechts ein, und als Gegenmaßnahme begingen wir den (auch heute noch überaus beliebten) Fehler, unsere Apps so derartig brutal mit Werbebannern und Interstitials zuzuscheißen, dass unsere User verärgert gingen und nie wieder kamen.

Herbst 2012 sah es schon relativ finster aus, und wir mussten uns überlegen, was wir tun konnten, um Kosten einzusparen und vielleicht doch noch das Ruder rumzureissen (was ein schöner Wortwitz ist, denn bis dahin hatten wir rundenbasierte Spiele mit Piraten-Thema entwickelt).

Die erste Stelle (und letzten Endes die einzige), an der wir den Rotstift ansetzten, war die native App-Entwicklung. Bis dahin hatte ich nativ für iOS entwickelt. Wir wollten aber den Android-Markt mitnehmen und wir mussten uns schnell bewegen… Wir könnten viel schneller und kostengünstiger sein, so unsere damalige Überlegung, wenn wir unsere Apps fortan mit einem hybriden Framework entwickeln würden.

Wir entschieden uns für Corona, ein Crossplatform-Framework für Android und iOS, um unsere bestehenden Spiele zu portieren und unser nächstes (und letztes) Spiel anzugehen.

Unglücklicherweise war uns da eine  ganz große und wichtige Wahrheit noch nicht bewusst, nämlich:

Crossplatform-Anwendungsentwicklung ist Unfug.

Bevor jetzt alle auf mich losgehen: Klar, man muss das einschränken. Es spricht überhaupt nichts dagegen, ein Spiel, das keinerlei speziellen Features und Eigenheiten der Zielplattform prominent verwendet, beispielsweise in Unity3D zu entwickeln.

Unser nächstes Spiel aber sollte eine rundenbasierte Foto-Rate-App werden, in der man ein Teil eines Gegenstandes mit der Handykamera aufnahm und zurechtschnitt und ein zufällig ausgewählter Mitspieler raten musste, worum es sich handelte. Eine Art Mischung aus Kreuzworträtsel, Instagram, Memory und Chatroulette… und als solches eine sehr nette Idee. Gleichzeitig konnte man noch mit seinen Mitspielern chatten und Extras kaufen und so weiter und so fort.

Nun haben sowohl Android-User als auch (vermutlich noch in stärkerem Maße) iOS-User gewisse Erwartungen daran, wie sich eine Software anzufühlen hat. Insbesondere wenn es um Dinge geht wie Fotos aufzunehmen und zurechtzuschneiden, zwischen verschiedenen Views hin- und her zu navigieren und mit andren Usern zu chatten, dann erwartet der Benutzer eine schon gelernte Art der Bedienung, und er erwartet (mit Fug und Recht, wie ich betonen möchte), ebendiese Bedienung in einer flüssigen und robusten UI tätigen zu können.

Und damit nahm das Unglück nahm seinen Lauf, denn bei Corona fühlte sich nichts flüssig und robust an, weder auf Anwender- noch auf Entwicklerseite. Um vernünftig mit großen Fotos hantieren zu können musste ich eine native Erweiterung schreiben, ebenso für alles an Client-Server-Kommunikation, was über das simple Senden von JSON-Daten hinausging (und der Google Blobstore erwartet nunmal multipart binaries, was ebenfalls sein gutes Recht ist). Im Endeffekt schrieb ich so viele native Erweiterungen von Corona, dass man die gesamte Sache auch gleich hätte nativ implementieren können.

Selbst wenn ich nicht nativ programmieren musste, dann war Corona auch für die einfachsten Dinge unglaublich unhandlich und gewöhnungsbedürftig. Ganz simples Beispiel: Pinch- und Rotate-Gesten sind unter iOS sehr beliebt, um Bilder zu rotieren und zu zoomen, oft und gerne wird auch beides zusammen verwendet. Um diese Gesten in einer nativen UIView zu erkennen und das Bild dementsprechend transformiert darzustellen, benötigt es im nativen UIKit ungefähr 5 Minuten Zeit und 10 Zeilen Programmcode. Unter Corona hingegen waren es zum Schluss 247 Zeilen, und zwar nach zwei Tagen Entwicklungsarbeit und etlichen grauen Haaren mehr auf meinem Haupte.

Und ganz von alledem abgesehen fühlte sich die App weder wie eine Android-App noch wie eine iOS-App an. Die Views ruckelten in  der Navigation unbeholfen herum (während nativ alles hardwarebeschleunigt und flüssig funktioniert hätte), es gab Blackouts und Blitzer wenn die Library mal wieder versuchte, irgendetwas nachzubilden, was nativ ganz anders aussah und normalerweise problemlos funktionierte, und ständig hing drohend über alledem der Memory Warning Crash, weil zig unnötige Megabytes an Code im Speicher gehalten wurden, die das Framework beherrbergten.

Damit wir uns nicht falsch verstehen: Corona ist vermutlich schon ganz ok, um ein einfaches 2D-Spiel zu schreiben, das nichts besonderes können muss. Für unseren Anwendungsfall (und tatsächlich war das Spiel in vielen seiner Funktionen näher an einer „Anwendung“ als an einem „Spiel“) jedoch war es falsch, falsch und nochmal falsch.

Doch auch wenn unser Crossplatform-Ausflug letzten Endes einer der fetteren Nägel in unserem Sarg war, so bin ich dennoch dankbar dafür, dass wir ihn unternommen haben. Denn erstens habe ich dabei viele Fehler gemacht, die ich in dieser Form garantiert nicht noch einmal machen werde (mein Crossplatform-Abwehrreflex ist gesund und jederzeit bereit zum Angriff).

Und zweitens lernte ich dabei Lua kennen.

Lua

Lua ist eine Programmiersprache, die 1993 von der Computer Graphics Technology Group der Päpstlichen Katholischen Universität von Rio de Janeiro in Brasilien entwickelt wurde.

In Brasilien gab es damals ein mehr oder weniger strenges Embargo für ausländische Hard- und Software. Das führte dazu, dass man das Rad öfter mal neu erfinden musste… und in einigen Fällen führte es dazu, dass man das Rad vor allen anderen erfand, und obendrein noch ein besseres und schöneres Rad als die anderen.

Denn TCL, die einzige vergleichbare damals schon existierende Skriptsprache, war im Vergleich zu Lua undurchsichtig, kompliziert, unflexibel und ganz allgemein eine ziemlich ekelerregende Angelegenheit.

PHP und JavaScript erschienen erst drei Jahre hinterher auf der Bildfläche und sind auch heute, 20 Jahre später, noch immer kein ausgesprochenes Paradebeispiel für Schönheit und Klarheit.

Als die Corona-Leute eben jene Crossplattform-Lösung ersannen, die uns schließlich (unter anderem) das Genick brach, da wählten sie Lua als Frontend-Programmiersprache. Aus relativ einleuchtenden Gründen, denn Lua ist leicht erlernbar, sehr effizient, lässt sich sehr gut in andere Programmiersprachen einbetten, und steht unter der MIT Lizenz, sprich, es ist für jedermann frei verfügbar und in eigene Projekte integrierbar.

Und so kam es, dass ich eines Tages vor der Aufgabe stand, Lua zu lernen. Und, oh Wunder, so sehr Corona selbst ein Krampf im Allerwertesten war, so sehr lernte ich Lua schätzen.

Denn erstens ist Lua konzeptionell wirklich sehr klar und einleuchtend. Zwar ist Lua selbst erstmal nicht objektorientiert, aber die vorhandenen Sprachkonstrukte wie metatables und Funktionen als First-Class-Objekte lassen Konzepte wie Objektorientierung und Vererbung sehr leicht verwirklichen.

Zweitens ist Lua für eine interpretierte Skriptsprache sehr schnell⁴. Ich hab keine Geschwindigkeitsvergleiche mit anderen Sprachen gemacht, aber andere Leute haben das getan, und das bestätigt meine Eindrücke.

Drittens ist Lua schlank und unauffällig. Ein ausgewachsener Lua-Interpreter kommt in ca. 180kb ARM-Code unter.

Und viertens mag ich Lua einfach. Das ist bei Programmiersprachen so ein persönliches Ding, das sich schwer begründen lässt. Manche mag man, andere nicht so sehr. Als ich beispielsweise anno 1998 Objective-C kennenlernte, da war quasi sofort klar, dass das eine große Liebe werden würde. Swift hingegen (was viel bessererer weil moderner ist) reisst mich nicht im geringsten vom Hocker… und das liegt nicht daran, dass ich nicht gerne neue Dinge lerne (siehe: Lua).

Auf jeden Fall: Das alles führte dazu, dass ich auch noch lange nach dem Niedergang unserer Spiele-Company gerne den Lua-Interpreter auspackte und das eine oder andere Stück Spiel programmierte… was auch mit dem Auftauchen einer wirklich sehr genialen neuen Hardwareplattform zusammenhing, und der damit verbundenen Wiederauferstehung eines schlanken und schnellen Betriebssystems aus den späten 80er Jahren.

Aber das ist dann das Thema des nächsten Postings in dieser Reihe.


¹ Das gilt natürlich nicht für die Brotjob-Kollegen. Vor denen bleiben meine Musiker- und Fotografen-Personae ebenso gut versteckt, wie ich bisher meine Eigenschaft als Programmierer vor meinem Musik- und Fotopublikum versteckt habe. Komisch, ich mache das andersrum garantiert nicht freiwillig, aber es scheint mir ein ungeschriebenes Gesetz zu sein, dass diese Welten getrennt sein müssen.

² Danke, sleeksorrow, für das Wort

³ Wobei es mir jetzt auf dieses ‚CTO‘ gar nicht so sehr ankommt… ich frage mich eh immer wieder, warum Softwareentwickler nicht einfach Softwareentwickler bleiben dürfen, sondern mit der Zeit zu irgendwas hochtrabendem anderen mutieren müssen. Was ist so schlimm daran, ein Entwickler zu sein? Es gibt doch ein Leben lang etwas zu lernen und sich weiterzuentwickeln…

⁴ Zumindest war das damals so. Inzwischen läuft Javascript vermutlich nativ auf irgendwelchen GPU-Kernen, die nebenbei alle 10 Sekunden einen komprimierten Framebuffer-Dump an die NSA schicken. It’s a brave new world.

Von Komfortzonen

Es ist an der Zeit, hier mal ein paar Takte über Softwareentwicklung zu reden.

Oder vielmehr: Über Entwicklung und Fortschritt im Allgemeinen, denn selbstverständlich lässt sich das, was sich Softwareentwickler den lieben langen Tag anhören dürfen, auch mühelos auf andere Berufe übertragen.

Beispielsweise finde ich, so ein Gas-Wasser-Installateur sollte ruhig mal was neues ausprobieren und seine Komfortzone verlassen. Insbesondere einer, der seinen Job schon sehr lange Zeit sehr gut macht. Es geht nämlich immer noch besser, der Prozess hört nie auf.

Das Sicherheits-Druckventil in der Heizung einfach mal weglassen. Den Mut haben, alte Zöpfe abzuschneiden.

Oder, noch besser, das Ding durch den allerneuesten heissen Scheiss aus den USA ersetzen, vom dem niemand so richtig weiss, ob und wie er funktioniert, den aber irgendwelche eigens dafür gezüchteten Evangelisten auf Konferenzen ganz toll finden.

(und überhaupt, pfffff, Sicherheitsventil, das ist so funktional, so von gestern. Heutzutage macht man sowas reaktiv. Sieht zwar erstmal viel komplizierter aus, mit dem dadurch bedingten Grossbrand nebst zugehörigem Feuerwehr- und Notarzteinsatz… aber wenn der Groschen erstmal gefallen ist, dann ist es die wahre Lehre)

Und da nicht aufhören. Überkommene Arbeitsweisen aktiv hinterfragen und offensiv angehen.

Einfach mal ein Lagerfeuer neben der Gasleitung entfachen und gemütlich ne Kippe schmauchen während man schaut ob auch alles schön dicht ist.

Das Klo einfach mal in einem 32°-Winkel installieren und den Kunden dann in die Richtung erziehen, dass das vollkommen schnafte so ist.

Und auch in der Elektrotechnik könnte man sicher so viel anders und besser machen, wenn die Leute endlich mal aus ihrer Komfortzone rauskommen und sich neuen Ideen gegenüber öffnen würden.

Beispielsweise arbeiten zwei mit Handschellen aneinander gefesselte Elektrotechniker sicher sehr viel schneller und effizienter an einem Problem als nur einer allein. Was? Warum wehrt ihr euch denn dagegen? Ihr habt es ja noch gar nicht ausprobiert. Wer sich nicht weiter entwickeln will, der ist irgendwann weg vom Fenster.  Also hopp, hier, Handschelle, Fesseln.

Und dann, beispielsweise so ein Trafo. Muss der unbedingt sein? Wozu ist der überhaupt gut? Da kann man sicher was anderes neues hippes einbauen, oder einen kleineren, oder irgendwas, was nicht so viel kostet und nicht so viel Zeit braucht, oder? Und die LEDs ruhig mal ohne Vorwiderstände betreiben. Dinge anders machen. Traut euch!

(und kommt mir nicht mit ihr habt das so gerlernt oder gar studiert, oder mit physikalischen Gesetzen. Das hier ist die richtige Welt, Baby! Ihr müsst auch mal was anders machen! Und das sage ich bewusst als Fachfremder!)

Mut haben, mal ein paar Paradigmen zu verschieben!

Auch bei der Gärtnerei. Müssen Pflanzen denn wirklich unbedingt in Erde wachsen? Könnte man da nicht mal was neues ausprobieren, z.B. stinkenden synthetischen Nährschleim oder sonst ein Wundermittel, mit dessen Anpreisen sich ein Haufen Leute, die noch nie im Leben einen richtigen Garten gesehen haben, auf eigens dafür eingerichteten Tagungen eine goldene Nase verdienen?

Und dieses Ding, mit dem ihr die Löcher in die Erde gräbt, ihr nennt es „Schaufel“. Voll archaisch. Voll oldthink. Gibt’s da nicht irgendwas anderes? Am besten irgendwas verteiltes, verteilen ist immer gut, am besten was, das für viel Geld von mehreren Leuten tagtäglich gewartet werden muss, damit es halbwegs funktioniert. Ihr werdet sehen, das ist dann Fortschritt.

Traut euch, die Dinge mal mit frischen Augen und einem frischen Blick auf das Wesentliche anzuschauen.

Verlasst eure Komfortzonen. Dann wird nämlich alles besser.