Post

Coole Listen auf GitHub

Das Internet ist voller Listen. Und Listen über Listen. Zeit, für einen Blick darauf.

Coole Listen auf GitHub

Was wäre die Welt ohne Listen

Der heutige Artikel spukt mir schon länger im Kopf herum. Einen Artikel nur über Listen empfand ich als etwas substanzlos. Je länger ich aber darüber nachdachte, desto mehr ist mir in den Sinn gekommen, wie wichtig Listen eigentlich sind. Wenn man länger darüber nachdenkt, gibt es für wirklich alles Listen. Es gab berühmt-berüchtigte Listen, Listen, die Leben gerettet haben, weniger dramatische Listen wie die für unseren Einkauf und viele mehr.

Tatsächlich hatte ich immer Schwierigkeiten, bestimmte Konzepte beim Thema Programmieren zu verstehen, bis ich in einem JavaScript Tutorial den Satz gelesen hatte, dass im Internet „alles eine Liste ist“. Ob Facebook, TikTok, Newsseiten usw., alles Dienste, die mir Listen mit Posts und Artikeln ausspucken. Als ich diese Trivialität verstanden hatte, fiel mir das Lernen sehr viel einfacher, denn was auch immer ich programmierte, behandelte am Ende immer irgendeine Art von Liste.

Cool, Listen sind also wichtig. So wichtig, dass es unendlich viele von ihnen gibt. Dazu legen wir alle ja auch noch unsere eigenen Listen an. Man verliert also schnell den Überblick. Daher habe ich mich doch noch dazu hinreißen lassen, einen Artikel über nützliche Listen auf GitHub zu schreiben.

Ich stelle die jewilige Liste vor und erkläre, warum ich sie nützlich oder wichtig finde. Denn eines ist klar, GitHub ist nicht länger nur das Datengrab für zig Millionen Software Projekten. Dort liegen auch einige Wissensschätze, darunter auch die von mir heilig gesprochenen Listen.

Mir ist im Übrigen die Ironie nicht entgangen, dass ich mit diesem Artikel eine Liste über Listen erstellt habe. Dass eine Liste davon eine Liste über Listen ist, setzt dem ganzen die Krone auf. Wo soll das nur enden …

Auf geht’s.

1. Eine Liste sie alle zu listen

Man kann auf GitHub alle möglichen Dinge hosten, nicht nur den Code von Software. Als die Menschen herausbekommen haben, dass man auch einfach nur Markdown Files in einem Repository ablegen kann, wurde auch genau das gemacht. Kurz zur Erklärung: Mit Markdown lassen sich einfache Textdateien mit etwas Formatierung versehen. So kann man sein Dokument mit Überschriften, Tabellen und weiteren Elementen strukturieren und hübsch machen. Ein Markdown Cheat Sheet findet sich unter diesem Link.

Also, man kann in einem Repository eine Datei speichern, diese schick formatieren und dem Rest der Welt verfügbar machen. Auf Englisch lässt sich sowas mit dem Wort „Awesome“ ausdrücken, was mich zur ersten und wohl wichtigsten Listen in diesem Artikel führt:

Bei ihr handelt es sich eher um eine Meta-Liste, also eine Liste über Listen. Daher ist sie sehr umfangreich, im wahrsten Sinne des Wortes. Ich bin immer wieder einmal in diese abgetaucht nur um zu merken, dass das ein richtiges „Rabbit Hole“ ist. Man klickt was an, klick noch einen Link weiter und Zack, es ist schon wieder früher Morgen.

Kurz um, diese Liste ist ein Gesamtkunstwerk, ein Opus Magnum. Es braucht Zeit und etwas Mühe, die Perlen herauszufischen, die für die eigenen Zwecke und Projekte nützlich sind. Ich habe mich dabei erwischt, eine eigene Liste über meine Lieblingslisten anzulegen. „Ok Google, kann man süchtig von Listen werden?“

2. Am Anfang war VS Code

Wer programmiert, muss seine jeweils gewählte Hexensprache irgendwo einfügen. Die ganz Harten nehmen dafür einen einfachen Texteditor, die weniger harten aber dafür um so Ambitionierteren schnappen sich eine IDE.

Dazwischen sortiert sich ein Editor wie „VS Code“ ein. Hierbei handelt es sich um einen sehr mächtigen Texteditor von Microsoft. Auch um diesen hat sich eine fleißige und große Community entwickelt. Denn durch Syntax-Highlighting und viele andere Funktionen hat er sich zurecht einen Platz im Herzen vieler Menschen ergattert, die coden müssen oder wollen. Noch sehr viel mächtiger wird VS Code durch Add-ons. Davon gibt es inzwischen so viele, dass – man ahnt es – eine Liste hermuss, die dabei hilft, einen Überblick zu bekommen. Denn wer Lust hat, kann sich seinen VS Code Editor in eine JAVA Umgebung umbasteln. Da sind wir dann wieder bei einer IDE gelandet, aber das ist ein anderes Thema.

Ob eine virtuelle Umgebung für Python, die Unterstützung für noch so exotische Programmiersprachen, kleine Webserver, es gibt als Add-ons nichts, was es nicht gibt. Da lohnt es sich einmal zu schauen, was diese Wundertüte so alles enthält:

3. Python – die Schlange ist überall

Python hat sich in der Welt der Programmierung ordentlich gemausert. Was als leicht zu lernende Sprache für Schüler und Studenten startete, ist inzwischen zur tragenden Säule der Data Science und Machine Learning Welt geworden. Und es stimmt, weil Python so leicht zu lernen ist, geht der Einstieg in die Welt der Programmierung schnell vonstatten. Statt sich zuerst mit Datentypen und Klassen-Konzepten auseinandersetzen zu müssen, gehen sich hier die ersten Schritte viel einfacher an – looking at you JAVA! Und weil der Einstieg so einfach ist, hat sich schnell eine große Community darum entwickelt.

Und wo eine große Community ist, wächst auch schnell ein stattliches Ökosystem heran. Bei kaum einer anderen Sprache trifft folgender Spruch mehr zu: „Wenn man es programmieren kann, hat es bestimmt schon einer getan“. Wer Lust hat, kann vom Backend bis Frontend alles in Python machen. Die dazugehörige Website, das CMS, das CRM, das gesamte ML / DL Framework und – zum Teufel – auch die Personalverwaltungssoftware lässt sich vollständig im Python entwickeln und betreiben. Häufig gibt es bereits eine fertig entwickelte Lösung irgendwo auf GitHub. Um den Überblick über all die Frameworks und Dokumentationen zu behalten, ist eine Liste nicht nur nützlich, sie ist unabdingbar.

4. Rust - Gekommen um zu bleiben

Kürzlich ist der Linux Kernel in der Version 7 erschienen. Neben vielen neuen Treibern und Erweiterungen ließ vor allem eine Nachricht aufhorchen: Rust ist nicht länger als „experimentell“ markiert, sondern nun stabil. Rust ist inzwischen ein fester Bestandteil von Linux. Langsam aber sicher bahnt sich die Sprache ihren Weg in die Welt.

Auch ich habe mich in das sehr kalte Wasser gestürzt und angefangen Rust zu lernen. Mich treibt da eher der sportliche Ehrgeiz, denn Rust hat so seine Eigenheiten und Tücken. Ich muss viele Marotten und Bequemlichkeiten ablegen, um mich wohl zu fühlen. Das wird aber sicher noch eine Weile dauern. Rust ist darauf ausgelegt, sicheren Code zu erzeugen. Dass man dafür alte Gepflogenheiten über Bord werfen muss, versteht sich von selbst. Ganz ohne Wachstumsschmerzen geht so etwas eben nicht. In meinem Artikel „Programmiersprachen sind halt so“ setze ich mich damit auseinander.

Als ich in Rust eingestiegen bin, hat mich zuerst interessiert, wie weit sich das Ökosystem entwickelt hat. Man will ja schließlich wissen, was man alles selbst machen muss und wo man sich ins gemachte Nest legen kann. Wäre dafür nicht eine Liste interessant? Ja, dachte sich jemand und hat diese angelegt:

5. CSS - Style is everything

Meine ersten Schritte in die Welt des Codings habe ich mit HTML und CSS gemacht. Ja, ich weiß! Es handelt sich nicht um Programmiersprachen. Sie sind aber geeignet, sich mit dem Umgang mit Syntax, Editoren und Entwicklungsumgebungen vertraut zu machen. Ergänzt man dies dann später mit JavaScript, findet man die Brücke zu all den anderen, „richtigen“ Programmiersprachen.

CSS hat mich hierbei immer fasziniert. Das liegt vor allem daran, weil es sich so schnell entwickelt. CSS wurde mit der Zeit um viele Funktionen erweitert. Dinge, die ich zuvor nur mit JavaScript hinbekommen habe, sind inzwischen fest in den Standard implementiert. Es bleibt spannend, denn wenn ich mich nicht regelmäßig damit beschäftige, bin ich ruckzuck raus wie ein Milchzahn.

Warum braucht es bei CSS aber eine Liste? Wegen der vielen Frameworks, die sich darum herum entwickelt haben. Tailwind, Sass, Less – CSS ist sehr viel mächtiger, als man denken mag. Wer hier nicht den Anschluss verlieren will, freut sich über eine Liste:

6. Boilerplate, wenn es schnell gehen muss

Ich hatte neulich eine kleine Herausforderung. Ich wollte einen Webserver per Docker einrichten und schnell mal testen. Um es grundlos kompliziert zu machen, hatte ich mich für irgendein schnelles React Projekt entschieden, das ich aber mit Vibe Coding erstellt hatte. Mein Webserver lief und der Code kam in die digitale Tonne.

Solch ein Manöver hatte ich in der Vergangenheit geschmeidiger hinbekommen. Denn schon beim Einstieg in CSS habe ich die fabelhafte Welt des Boilerplate Codes für mich entdeckt. Es handelt sich quasi um vorgefertigten Code, auf dem man sein eigenes Projekt aufbauen kann. Statt also die für ein Projekt benötigten Files alle händisch anzulegen, zieht man sich so eine Boilerplate und kann direkt loslegen. Gerade bei React hat sich das für mich als besonders nützlich erwiesen.

Wer zudem in verschiedenen Welten unterwegs ist, also seine On-off-Beziehungen zu z.B. Rust, Python und CSS pflegt, muss sich immer einmal wieder mit den existierenden Boilerplates auseinandersetzen, wenn man es denn bequem halten will. Selbstredend gibt es auch dafür eine Liste:

7. Design - das Auge codet mit

Gute Kollegen sagen einem ab und zu, wie gut die Arbeit ist, die man so macht. Richtig gute Kollegen sagen einem die Wahrheit. So kam es, dass mir eine Kollegin einst mitteilte, wie herzzerreißend hässlich die Tools sind, die ich uns zwecks Arbeitserleichterung erstellt hatte. Und da war was dran, meine Tools taten exakt das, was sie tun sollten, waren ansonsten aber ein Anschlag auf das ästhetische Empfinden jedes UI / UX Designers.

Ich habe mich immer schwer damit getan, schöne und ansprechende Oberflächen zu entwickeln. Klar ist aber auch, je komplizierter ein Programm, eine App oder Anwendung wird, desto wichtiger ist eine sinnvoll gestaltete Oberfläche. Ich begann folglich mich mit dem Thema Design auseinander zu setzen. Das ist eine ganz eigene Welt, die von Farbenlehre, über Typografie, bis zum UI / UX Design reicht. Auch hier fällt der Einstieg leicher, wenn eine gute Seele da draußen eine Liste angelegt hat:

8. Selbst ist der Hoster

Meiner kleinen Technik Demo, die mir als Blog dient, kann man entnehmen, dass ich mich sehr für das Thema Self Hosting interessiere. Damit habe ich früh angefangen und ernte durch die Verwerfungen in der Welt nun die Früchte meiner Arbeit. Wer seine Daten aus der Cloud zurück auf den heimischen Boden holen will, wird sich damit beschäftigen wollen (und müssen). Meine Artikelsammlung zu dem Thema findet sich übrigens unter diesem Link.

Die eigene Cloud zu betreiben bringt viele Vorteile mit sich. Ich weiß zu jederzeit, wo meine Daten gespeichert sind und wer auf diese Zugriff hat. Zudem bin ich nicht der Willkür eines Monopolisten ausgeliefert, der nach Belieben den Funktionsumfang einschränken und die Preise erhöhen kann.

Es versteht sich jedoch von selbst, dass dieses Thema sehr kompliziert werden kann. Die großen Cloud-Anbieter verkaufen zuallererst Bequemlichkeit. Die passende Hardware ist nur eines der Themen, mit denen man sich beschäftigen muss. Danach kommt nämlich der größere Brocken, die geeignete Software. Die Community rund um Self Hosting ist groß und wächst ständig. Das gilt auch für das Software Angebot, welches parallel und exponentiell wächst.

Man, das schreit doch geradezu nach einer Liste:

9. Jedem Hobby seine Liste

Wenn ich schon so elegant auf meinen eigenen kleinen Blog hinweise, dann auch auf mein Hobby, die Fotografie. Auch wenn ich hierin nicht mehr so viel Zeit und Mühe investiere, wie ich es in der Vergangenheit getan habe – und das schmerzt – so versuche ich mich dennoch ab und zu darum zu kümmern. Zuletzt hatte ich ja RapidRAW getestet und vorgestellt.

Bisher habe ich nur Listen vorgestellt, die sich irgendwie um das Thema Programmieren gedreht haben. Tolle Listen gibt es aber nicht nur dafür, sondern auch für viele andere Themen. Wer ein spannendes Hobby betreibt, wird sich vielleicht über eine passende Liste mit interessanten Projekten, Links und Communitys freuen. Natürlich findet sich für die Fotografie ebenfalls eine solche Liste. Besonders toll: Es geht vornehmlich um Open Source Photography. Denn gerade auf diesem Themenfeld tut sich gerade viel.

10. Why so serious?

Programmieren ist eine ernste Sache. Für humorvolle Menschen vielleicht eine Idee zu ernst. Aber da es auch programmierende Menschen gibt, denen zuweilen der Schalk im Nacken sitzt, entsteht fast zwangsläufig ein nicht ganz ernst gemeintes Ökosystem.

Ich stieß irgendwann einmal auf ein NPM-Paket, das so herrlich sinnlos war, dass ich tatsächlich lachen musste. Ich meine damit, dass ich nicht nur Luft aus der Nase pressen musste, sondern physikalisch messbares Lachen. Es war ein klassisches „lol“. Dieses Paket testet, ob eine Nummer gerade ist und gibt entweder „false“ oder „true“ zurück. Das ist so dermaßen sinnlos, das es für mich in diesem Moment einfach lustig war. Das Projekt ist nach eigener Aussage ernst gemeint. Man kann das Paket installieren, einbinden und nutzen. Es ist sowas wie ein digitaler „elektrischer Apfelentkerner“.

Es gibt viele solcher „Scherzprojekte“. UWU als Programmiersprache? Den Bootloader mit einem Minecraft Theme aufpeppen? Endlich heraus finden, wie man aus VIM wieder heraus kommt?

Oder einfach nur über den Irrsinn anderer schmunzeln? Ja, auch dafür gibt es eine Liste:

Fazit

Das Internet ist unübersichtlich und teils auch unzugänglicher geworden. Dazu mischt sich der allgegenwärtige AI-Slop. Die richtigen Informationen zur richtigen Zeit zu bekommen ist eine Herausforderung geworden. Ursprünglich wurde das Internet genau deswegen gegründet, um möglichst vielen Menschen möglichst viel Wissen vermitteln zu können, ohne viele Hürden. Und natürlich für Katzenbilder. Und Erwachsenenunterhaltung …

Als das Internet wuchs, waren Verzeichnisdienste sehr beliebt. Hier wurden Websites in Kategorien und Listen einsortiert. Hat man sich für ein bestimmtes Thema interessiert, hat man einfach einen solchen Katalog durchwühlt und nach entsprechenden Websites gesucht. Da die Anzahl der Websites irgendwann explodierte, haben Suchmaschinen diese Aufgabe übernommen. Aber auch Suchmaschinen bewältigen diese Arbeit nicht mehr zuverlässig. Was hilft hier weiter? Zurück zu den Wurzeln. Listen / Kataloge anlegen mit Websites, Projekten und Communitys, die eine Mehrheit als nützlich empfindet.

Ich bin sehr froh, dass es diese Listen gibt. Möchte ich „mal eben“ was Neues in CSS ausprobieren, hilft mir eine solche Liste weiter, Updates zur Syntax und dazu noch den passenden Boilerplate Code zu finden. Sie sind für mich so praktisch, dass ich einen Artikel dazu erstellen musste.

Habemus Artikel.

Ressourcen:

Alle oben genannten Links noch einmal als übersichtliche Liste:

This post is licensed under CC BY 4.0 by the author.