__________________________________

                    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