__________________________________

                   JAVASCRIPT - MEIN LIEBSTER FEIND
                  __________________________________





Erste Schritte in MS-DOS
========================

 Ich  weiss  nicht  mehr  genau,  wann  ich  meinen  ersten  Computer
 geschenkt bekommen habe. Es muss  Anfang der 90er Jahre gewesen sein
 und  war  ein ausgemusterter  386er  mit  ansonsten mir  unbekannten
 Spezifikationen. Leider  war niemand  in der  Naehe, der  mir dieses
 mysterioese Geraet  haette erklaeren koennen.  Da sitze ich  nun mit
 meinen  11  oder  12  Jahren   vor  einem  fast  komplett  schwarzen
 Bildschirm.   Der   Kursor   hinterm   MS-DOS-Befehlsprompt   blinkt
 rhythmisch, und laesst mich  ratlos zurueck. Dass mein Betriebsystem
 in  einer  mir  unverstaendlichen   Sprache  mit  mir  kommuniziert,
 erschwert die Sache zusaetzlich.

 Zum  Glueck hatte  ich einen  Freund,  der neben  einem DOS-PC  eine
 riesige Biliothek  an raubkopierten  Spielen besass. Er  zeigte mir,
 wie man eine  Diskette kopiert, in ein Verzeichnis  wechselt und ein
 Spiel  startet.  Hier  lernte  ich an  einem  Nachmittag  von  einem
 Gleichaltrigen mehr,  als alleine in  den vielen Monaten  zuvor. Von
 diesem Zeitpunkt an war mein Rechner endlich zu etwas zu gebrauchen.
 Ich tauschte  virenverseuchte Spieledisketten  auf dem  Schulhof und
 probierte sie  nachmittags gleich aus. Manche  davon funktionierten,
 manche nicht.

 Mein  naechster  PC hatte  bereits  satte  100MHz, eine  8  Gigabyte
 Festplatte und ein CD-Rom-Laufwerk. Mit  Windows 95 begann fuer mich
 das Zeitalter  der grafischen  Benutzeroberflaechen. Ich  hatte auch
 eine ansehnliche Sammlung an CD-Roms  (vor allem Beilagen zu PC- und
 Spielezeitschriften),   welche   mir   Zugriff   auf   eine   schier
 unueberschaubare    Menge   an    neuen,   interessanten    Inhalten
 ermoeglichte. Doch  was danach  kommen sollte, stellte  alles bisher
 Dagewesene in den Schatten.


Das Internet
============

 Mein  erster Internetanschluss  eroeffnete  mir  eine komplett  neue
 Welt.  Email,   Chatraeume,  Pornobildchen   in  Briefmarkengroesse,
 animierte Gifs, Napster, etc.  Ich war ueberwaeltigt und begeistert.
 Ich  erinnere  mich  gut  daran,   wie  ich  MP3-Dateien  mit  einem
 speziellen  Programm in  1,5 MB  grosse Teile  zerlegte, um  sie per
 Diskette  von  einem  PC  auf  den  anderen  zu  transferieren  (ein
 CD-Brenner war fuer mich damals unerschwinglich).

 Das Internet damals  war fundamental anders als  das Internet heute.
 Es  gab  nicht  nur  wenige zentralisierte  Portale,  betrieben  von
 milliardenschweren   Megakonzernen.   Statt   Facebookprofilen   und
 Twitterfeeds,   hatten  die   Menschen   damals  selbst   gestaltete
 Homepages,    jede    mit    ihrem   eigenen    Charme:    animierte
 Hintergrundbilder,  ein wilder  Mix  aus  Schriftarten und  -farben,
 Gaestebucher,  chaotische  Menustrukturen   und  der  obligatorische
 "Under Construction"-Hinweis.  Es war  nicht alles gut  damals, aber
 die  privaten  Homepages  alá  Geocities hatten  Ecken  und  Kanten.
 Manchmal konnte man  in diesem Chaos wahre  Schaetze entdecken, wenn
 man nur genau hinschaute.

 Es dauerte  nicht lange bis  in mir  der Wunsch aufkam,  eine eigene
 Webseite zu erstellen.  Dass dies ohne Weiteres  moeglich war, wurde
 mir klar, als ich herausfand, dass man eine PowerPoint-Praesentation
 als  HTML-Datei speichern  konnte.  Es mag  kurios erscheinen,  aber
 meine  erste  (niemals  veroeffentlichte)   Homepage  habe  ich  mit
 PowerPoint erstellt.  Als das nicht  mehr ausreichte, habe  ich eine
 Zeitlang mit MS Frontpage  experimentiert, aber die Ergebnisse waren
 eher durchwachsen. Der naechste logische Schritt? Man muss direkt an
 die Quelle gehen.


HTML
====

 Ich  weiss  nicht woher  es  kam,  aber  auf  einmal hatte  ich  ein
 HTML-Einsteigerbuch in den Haenden. Es war wie eine Erleuchtung. Mit
 wenigen  Auszeichnungen,  konnte  man im  Browser  virtuelle  Welten
 entstehen lassen.  Im Nu  hatte ich eine  kleine HMTL-Seite  mit dem
 MacGyver-Intro im  MIDI-Format als Hintergrundmusik, ein  paar Fotos
 von mir, und einer ansehnlichen Kopfzeile: "WORLD OF ALEX".

 Mit der  Zeit wurden diese  Seiten umfangreicher und  komplexer. Ein
 guter  Freund  von  mir  fing   ebenfalls  an  eigene  Homepages  zu
 erstellen. Wir wetteiferten um  die beste Internetpraesenz und haben
 uns  gegenseitig den  ein oder  anderen Trick  abgekupfert. Gehostet
 habe   ich  damals   auf   dem  T-Online   Webspace,   den  es   zum
 Internetanschluss   dazu  gab.   Natuerlich  nur   echt  mit   einer
 de.vu-Domain. Irgendwann hatte ich  nicht nur eine Homepage, sondern
 mehrere, die sich unterschiedlichsten Themen widmeten. Ich hatte nur
 das Problem,  dass die  Seiten selbst oft  ziemlich leer  waren. Das
 Erstellen der Homepage hatte  Prioritaet, der Inhalt war nachrangig.
 Das zeigte eigentlich  schon wohin die Reise gehen  musste. Wenn der
 technische  Aspekt   der  eigentlich   interessante  ist,   ist  der
 naechstlogische Schritt  der Uebergang von  der Auszeichnungssprache
 zur Programmiersprache.


Kurzes Intermezzo mit C++
=========================

 An einem sonnigen Nachmittag kurz  vor der Jahrtausendwende fuhr ich
 mit  dem  Bus  in  die naechstgroessere  Stadt  um  einen  Buchladen
 aufzusuchen. Das HTML-Buch hatte ausgedient, etwas Neues musste her.
 Nach einigem  Stoebern entschied  ich mich  fuer einen  Grundkurs in
 C++. Voller  Erwartung legte ich  zu Hause die CD  ein, installierte
 den Compiler  und schrieb mein  ersten Programm: "Hallo  Welt!". Ich
 war  sehr stolz  auf mich.  Der gute,  alte DOS-Prompt  war mir  nun
 Untertan. Die  Ernuechterung sollte bald kommen.  Ich lernte einiges
 ueber   die  Bildschirmein-   und  ausgabe,   ueber  Variablen   und
 Kontrollstrukturen. Doch dann ging  es weiter mit objektorientierter
 Programmierung und mein  Interesse fing an zu  schwinden. Mit meinem
 neuen  Wissen  konnte ich,  fuer  meine  damaligen Begriffe,  nichts
 grundlegend  anderes   bewirken,  als   mit  meinem   ersten  "Hallo
 Welt!"-Programm.  Ich konnte  lediglich weissen  Text auf  schwarzen
 Grund generieren. Aber ich wollte etwas ganz Anderes! Ich wollte mit
 dem  Computer  interagieren,  wollte Dateien  lesen  und  schreiben,
 Grafiken  erscheinen  und   verschwinden  lassen,  Musik  abspielen,
 vielleicht das  CD-Rom-Laufwerk aus- und einfahren.  Im Vergleich zu
 meinen   HTML-Spielereien  war   die  Arbeit   mit  C++   altbacken,
 langweilig,  trocken. Um  es kurz  zu  machen: ich  habe mich  einer
 anderen  Programmiersprache zugewandt.  Einer  Sprache  die auf  dem
 aufsetzt, was ich bereits kannte.


JavaScript
==========

 Mit JavaScript  habe ich  Programmieren gelernt. Das  war vielleicht
 nicht die beste  Wahl, aber es ergab sich ganz  organisch aus meinen
 bisher gegangenen Weg in der Computerwelt.

 Mit   JavaScript   war  es   mir   nun   moeglich  mit   saemtlichen
 HMTL-Elementen, die  ich bereits  kannte, zu interagieren.  In einem
 ersten kleinen JS-Tutorial, habe ich  gelernt einen String aus einem
 Textfeld auszulesen  und mit einem, in  einer Variable hinterlegten,
 Passwort  zu vergleichen.  Ein  wahrhaft epischer  Moment in  meiner
 Karriere als Superhacker. Mein  erstes holistisches Programm, an das
 im  mich   entsinne  war  ein  Tamagotchi-Klon.   Mittels  ein  paar
 HMTL-Buttons konnte  man ein virtuelles Haustier  fuettern, pflegen,
 oder solange schlagen bis es  den virtuellen Tod fand. Daneben wurde
 die  GIF-Animation einer  springenden Katze  angezeigt, welche,  bei
 deren Ableben, durch eine entsprechend morbide Grafik ersetzt wurde.
 Ein sehr simples Programm, aber ein ungeheurer Spass.

 Ich bin lange exklusiv  bei der JavaScript-Programmierung geblieben,
 bis  in  meine fruehen  20er.  Ich  hatte  zwar keinen  Zugriff  auf
 Systemfunktionen, aber es  reichte aus fuer ein  paar kleine Spiele,
 wie eigene  Implementationen von  Snake, Minesweeper,  und Druglord.
 Mit  Einfuehrung  des  HTML5-Canvas-Elements  konnte  ich  nun  auch
 programmatisch     Bilder    auslesen     und    generieren.     Ein
 Mandelbrot-Generator und ein ASCII-Konverter waren dann auch schnell
 zusammengefrickelt.

 Ein Paradigmenwechsel war die  Einfuehrung von NodeJS. Endlich hatte
 ich  die  Moeglichkeit  auf  das Dateisystem  zuzugreifen,  mit  dem
 unterliegenden System zu kommunizieren  und mit wenigen Zeilen einen
 Webserver zu  programmieren! Zu  meinem Erstaunen musste  ich jedoch
 feststellen,   dass    JavaScript   nicht   unbedingt    die   beste
 Programmiersprache fuer diese Aufgaben ist. Die asynchrone Natur von
 JS   fuehrte  in   meinen  Programmen   zur  einer   immer  weiteren
 Verschachtelung    von    Callback-Funktionen.   Dies    hat    mich
 schlussendlich  anderen  Programmiersprachen naeher  gebracht.  Auch
 wieder kurios: als ich endlich die Funktionalitaet von JS bekam, die
 ich immer vermisst hatte, habe ich mich von JS abgewendet.

 Ich  will  nicht  sagen,  dass man  Werdegang  als  Hobbyprogrammier
 typisch ist.  Ich bin sogar sicher,  dass er das nicht  ist. Als ich
 gerade  meine  ersten kleinen  Programme  in  JS schrieb,  habe  ich
 erfahren, dass ein Junge in der Parallelklasse sich ebenfalls in der
 Kunst des Programmierens  uebte. Auf seiner Homepage  konnte man das
 Ergebnis  bewundern.   Ein  Space-Shooter  geschrieben   in  Delphi,
 ruckelfrei, mit ansehnlichen Sprites  und vertikalem Scrolling. Mein
 Tamagotchi-Klon sah dagegen alt aus.

 Waere ich 10 Jahre frueher geboren  worden, und haette ich Zugang zu
 Computer gehabt, waere mein Weg  vielleicht ein anderer gewesen. Ich
 haette wahrscheinlich  auf einem C64 meine  ersten Schritte gemacht,
 haette  Spiele gespielt  und  irgendwann kleine  Programme in  BASIC
 geschrieben,  haette  vielleicht   auch  ein  paar  Speicheradressen
 gepokt,  und   damit  ueberraschende  Effekte  erzielt.   Auf  einem
 einfachen System, wie dem C64 war  man der Hardware viel naeher, als
 auf  einem Windows-System.  Meine  Umtriebe in  JS  fanden genau  am
 anderen Ende  des Spektrums  statt. In einer  abgeschirmten Umgebung
 ohne   jeglichen   Systemzugriff,  auf   einem   speichergeschuetzen
 Betriebssytem. In  diesem ummaurten  Gaertchen, kann  man vielleicht
 die Logik des  Programmierens erlernen, aber nicht  wie ein Computer
 funktioniert.


JavaScript heute und das Web 2.0
================================

 Seit  meinen  ersten Gehversuchen  in  JavaScript  sind viele  Jahre
 vergangen.  Lange hat  mich diese  Sprache begleitet.  Wenn ich  mir
 Quelltext aus  alten Tagen anschaue, ueberlaeuft  mich ein eiskalter
 Schauer, aber auch ein Anflug von Nostalgie. Ich habe mir viel Neues
 angeeignet, habe neue Sprachen,  Algorithmen und Paradigmen erlernt.
 JavaScript  wird  fuer  mich   immer  einen  besonderen  Stellenwert
 einnehmen, aber es  hat sich veraendert, stark  veraendert. Es kommt
 mir vor  wie ein  Freund, von  dem man sich  ueber die  Jahre hinweg
 immer mehr entfernt. Waehrend  es frueher als dynamische Erweiterung
 von Webseiten  eingesetzt wurde, die die  Nutzererfahrung verbessern
 sollte, ist JS heute ein alles subsumierender Moloch.

 Da  gibt es  Single-Page-Applikations,  die  den Zurueck-Button  des
 Browser   faktisch   nutzlos   machen,  da   gibt   es   tonnenweise
 nicht-triviales  und  vor  allem nicht-freies  JavaScript,  das  von
 unzaehligen externen Domains nachgeladen wird. Dabei handelt es sich
 oft um  Tracking-Skripte, die jede  noch so kleine  Mausbewegung des
 Nutzers  aufzeichnen, oder  um Verhikel  zur moeglichst  prominenten
 Platzierung  von Werbebannern.  Immer oefter  wird JS  eingesetzt um
 essenzielle  Bestandteile  einer  Webseite, also  Text  und  Bilder,
 nachzuladen.  Mit   deaktivertem  JS  sieht  man   nichts  als  eine
 gaehnende, weisse  Leere. Auf Performanz wird  dabei fast ueberhaupt
 keinen Wert  gelegt. Wenn  mein CPU-Luefter  aufjault, nur  weil ich
 eine bestimmte Internetseite aufrufe, ist das kein gutes Zeichen. Es
 ist eigentlich ein Skandal.


Gegenbewegung
=============

 Anno  2019  ist  das  Internet einfach  nur  kaputt.  Dominiert  von
 Grosskonzernen  wird  unser Surfverhaltens  genauestens  ueberwacht,
 aufgezeichnet und  ausgewertet. Websiteanbieter schaemen  sich nicht
 ihren  marginalen  Inhalt,  unter Zuhilfenahme  von  megabytegrossem
 JavaScript-Framework-Boilerplate-Code zu  praesentieren und  sich zu
 beschweren, wenn  man einen Werbeblocker einsetzt.  JavaScript, mein
 alter Freund,  ist heute  der willige Vollstrecker  dieses Unrechts.
 Was also tun?

 Nach  meiner   bitteren  Enttaeuschung  mit  JavaScript   und  immer
 komplexer  werdenden Webseiten,  spielte  ich mit  dem Gedanken  der
 hypothetischen  Einfuehrung eines  neuen Webstandards,  der auf  das
 Wesentlich  reduziert   ist.  Ueberschriften,   Paragraphen,  Links,
 Bilder, viel  mehr braucht  man nicht um  Informationen darzubieten.
 Alles andere  ist ueberfluessiger Plunder und  Blenderei. Dies steht
 in krassem Gegensatz, zu meinem alten  Credo: erst die Form dann der
 Inhalt.  Heute glaube  ich, dass  der Inhalt  im Vordergrund  stehen
 muss. Die Praesentation muss lediglich funktional sein. Warum sollte
 eigentlich die Webseite bestimmen, auf  welche Art und Weise ich den
 Inhalt  konsumiere?  Lasst  das  doch  uns  entscheiden  (ein  gutes
 Beispiel fuer die Umsetzung dieses Gedankens ist der Reader-Modus im
 Firefox)!

 Dieser hypothetische Standard von  dem ich sprach, muesste zunaechst
 einmal genauestens  definiert und  dann vor allem  etabliert werden.
 Kein einfaches Unterfangen. Und warum das Rad neu erfinden, wenn ein
 solcher  Standard seit  Jahren  existiert? Ich  rede natuerlich  vom
 Gopher-Protkoll!  Und  dieser  Text  steht  am  Ende  dieses  langen
 Gedankens.


Ende
====

 Ich habe  diesen Essay  vorwiegend fuer  mich geschrieben,  um meine
 Gedanken zu sortieren und zu  reflektieren. Ich habe mich fuer einen
 Sonntag  von  der virtuellen  Nabelschnur  abgetrennt,  um sie  ohne
 Ablenkung zu Papier zu bringen. Danke fuer's Lesen.

 Maerz 2019