Projekte
Minecraft
Minecraft ist ein Sandbox-Spiel, das 2009 veröffentlicht wurde und aktuell von Mojang Studios weiterentwickelt wird. Das Spiel ist sehr einfach aufgebaut und bietet dennoch nahezu unendliche Möglichkeiten - sowohl für Spieler als auch für Entwickler.
Kemuri Craft
Screenshot von gXLg auf dem Kemuri-Craft-Server beim Betrachten seines Inventars
Screenshot aus einem YouTube-Livestream
Ich spiele selbst gerne Minecraft, besonders gemeinsam mit Freunden. Eines meiner größten Projekte ist ein langjähriger Semi-Anarchy-Minecraft-Server namens "Kemuri Craft". Er durchlief mehrere Kapitel, wobei die allererste Welt bis in den September 2020 zurückreicht. Im Laufe der Jahre haben über 100 verschiedene Spieler an dem Projekt teilgenommen, wodurch ein einzigartiger Server mit einer umfangreichen Geschichte und Lore entstanden ist.
LibrGetter
LibrGetter-Cover
Titelbild von LibrGetter
Eine der mühsamsten und repetitivsten Aufgaben in Minecraft besteht darin, die Lesepulte von Bibliothekar-Dorfbewohnern immer wieder abzubauen und neu zu platzieren, um ein bestimmtes Verzauberungsbuch zu erhalten. Die beste Lösung ist die Automatisierung dieses Vorgangs - genau das ermöglicht mein Mod "LibrGetter". Er ist hochgradig kompatibel, flexibel konfigurierbar und verfügt über eine aktive Community. Das Projekt ist Open Source, gut dokumentiert und vollständig kostenlos: Quellcode, Dokumentation, Download.
Version't
Codebeispiele mit Version't
Codebeispiele mit Version't
Öffentliche Minecraft-Mods zu entwickeln kann schnell kompliziert werden, insbesondere wenn mehrere Minecraft-Versionen gleichzeitig unterstützt werden sollen. Codebasen driften rasch auseinander und die Wartung wird zunehmend aufwendig. Viele Entwickler stellen ältere Versionen ein und konzentrieren sich nur auf neuere Releases. Mein Ansatz ist dagegen, allen Nutzern neue Bugfixes und Features bereitzustellen - unabhängig davon, welche Minecraft-Version sie bevorzugen.
Genau dafür wurde Version't entwickelt. Version't ist eine experimentelle Entwicklungsumgebung, die aus zwei zentralen Komponenten besteht:
  • Version't Library - eine leistungsstarke Java-Reflection-Schicht für Minecraft mit Fabric, die unter anderem Vererbung von Klassen ermöglicht, die zur Kompilierzeit nicht existieren, sowie obfuskationsunabhängigen Bytecode bereitstellt
  • Version't Toolchain - ein Gradle-Plugin zur einfacheren Integration der Version't Library und zur Generierung der benötigten Mappings
Serverseitige Entwicklung
Hosting, Netzwerke, Sicherheit und Skalierbarkeit faszinieren mich. Mein Schwerpunkt lag in den letzten Jahren vor allem auf allem, was mit serverseitiger Entwicklung zu tun hat. Dadurch sind viele nützliche Projekte entstanden, während ich neue Konzepte erlernt, Fehler behoben und Erfahrungen mit langfristiger Wartung gesammelt habe.
Home Cluster
Bild des individuell 3D-gedruckten Server-Clusters
Eigenentwickelter und 3D-gedruckter Home-Cluster
Einer meiner Kindheitsträume war der Aufbau eines zuverlässigen, selbst entwickelten Clusters, der skalierbar, leistungsfähig und vollständig Open Source ist.
Heute bin ich stolzer Besitzer eines selbst entworfenen Raspberry-Pi-Clusters. Nach mehr als zwei Jahren Arbeit an der Idee habe ich eine Hardware-Architektur entwickelt, die meinen Anforderungen entspricht, sowie die dazugehörige Software zur Orchestrierung des gesamten Systems.
Screenshot des webbasierten Kontrollpanels für den Cluster
Webbasiertes Kontrollpanel für den Cluster
Das Ergebnis meiner Arbeit läuft heute in meiner Wohnung rund um die Uhr und hostet aktiv zahlreiche meiner Projekte - einschließlich dieser Website.
Hier eine Übersicht aller Komponenten:
  • Cluster Hardware - Übersicht über sämtliche Hardware-Komponenten, Kosten und Aufbau
  • Cluster Models - maßgeschneiderte 3D-Druckmodelle für den Cluster, entworfen und lizenziert von einem guten Kollegen
  • Cluster Setup - Einrichtungsskripte zur Vorbereitung der Hardware auf die Umgebung
  • gXLg Cluster - die Software zur Verwaltung meines Clusters. Zu ihren Aufgaben gehören DNS-Verwaltung, Deployment und Bereitstellung von Diensten sowie ein intuitives Kontrollpanel.
Nulls
Obwohl es bereits unzählige HTML-Frameworks gibt, war die Nutzung bestehender Lösungen nie mein bevorzugter Ansatz.
Deshalb habe ich ein eigenes Framework entwickelt, das sehr flexibel ist und genau meinen Vorstellungen entspricht. Es basiert auf Express.js.
Das Framework heißt "nulls" und ist auf GitHub verfügbar. Es wird aktiv weiterentwickelt und kommt bereits in mehreren meiner Projekte zum Einsatz - darunter auch diese Website.
Zusätzlich ist das Framework erweiterbar und kann durch eigene oder Community-Plugins angepasst werden.
Ein Beispiel dafür ist das Auth Plugin, das nulls um eine sichere und einfache Authentifizierungs-API erweitert und die Implementierung von Login-Systemen deutlich vereinfacht.
Experimente
Automatisierung
Ich habe viel experimentiert, um monotone und repetitive Aufgaben zu automatisieren. Die erfolgreichsten und bedeutendsten Ergebnisse entstanden dabei im Bereich von CI/CD-Pipelines.
CI/CD
Screenshot eines Style-Checkers als GitHub Action
Style-Prüfung über GitHub Actions
Einige ausgewählte Repositories:
  • Maven Action und Maven Repo - eine einfache Möglichkeit, innerhalb weniger Sekunden ein Maven-Repository mit GitHub Pages einzurichten
  • IntelliJ IDEA Format - Überprüfung von Code-Stil und Formatierung mit IntelliJ IDEA über GitHub Actions
Mobile Entwicklung
Meistens beschreibt der Begriff "Mobile Development" Software, die für mobile Geräte entwickelt wird. Bei mir ist es jedoch genau andersherum - ich schreibe den Großteil meines Codes unterwegs im Zug, draußen auf einer Bank oder gemütlich im Bett - und das alles auf meinem Smartphone (99% dieser Website wurden ebenfalls auf meinem Smartphone geschrieben).
nullcord
nullcord Logo
nullcord Logo
Als ich begann, mich intensiver mit Softwareentwicklung zu beschäftigen, war nullcord eines der ersten größeren Projekte, die ich vollständig auf meinem Smartphone entwickelt habe. Es ist besonders leichtgewichtig aufgebaut und richtet sich an das Hosting von Discord-Bots mit möglichst geringem Ressourcenverbrauch.
cocli
Beispielausgabe von cocli
Mein bisher höchster cocli-Rang
So sehr ich Clash of Code auch mag - die Erfahrung mit webbasierten Code-Editoren auf mobilen Geräten vermittelt oft den Eindruck, dass solche Spiele nicht für unterwegs geeignet sind.
Da mein Hauptgerät jedoch ein Smartphone ist und ich Flexibilität gegenüber Komfort bevorzuge, habe ich dafür meine eigene Lösung entwickelt: cocli - eine CLI-basierte Oberfläche für Clash of Code. Damit gelang es mir sogar, auf einem Smartphone einen Platz unter den 30 schnellsten Programmierern weltweit zu erreichen.
Code Golfing
Einer der Bereiche der Programmierung, die scheinbar ausschließlich zum Spaß existieren, ist das sogenannte "Code Golfing". Ziel einer Code-Golf-Aufgabe ist es, ein bestimmtes Verhalten mit möglichst wenigen Zeichen umzusetzen und dabei strenge Vorgaben einzuhalten.
Auch wenn extrem kompakter und schwer lesbarer Code im Alltag nur selten praktische Anwendung findet, fördert er das Verständnis sehr spezieller Konzepte und Mechanismen.
Hello World
Präsentation einer von Hand erstellten ELF-Binärdatei
Von Hand erstellte ELF-Binärdatei
Im Januar 2023 stieß ich auf einen interessanten Artikel über die Erstellung der kleinstmöglichen "Hello World"-Anwendung für Linux x86.
Da ich hauptsächlich auf meinem Smartphone programmiere und die verwendete Architektur AArch64 ist, entschied ich mich, die Idee nachzuvollziehen und eine eigene Variante für AArch64/ARMv8 zu entwickeln. Das Ergebnis war eine nur 124 Byte große Binärdatei, die "Hello World!<newline>" im Terminal ausgibt, regulär mit Exit-Code 0 beendet werden kann, direkt aus einer Shell gestartet wird und keine besonderen Voraussetzungen benötigt.
Zum Zeitpunkt der Erstellung dieses Textes ist meine Version die kürzeste bekannte Implementierung innerhalb dieser Kategorie.
Der Hexdump kann über diesen Link heruntergeladen werden.
zahl.py
Beispielausgabe des Programms zahl.py
Eine gigantische Zahl auf Deutsch ausgeschrieben
zahl.py ist ein Python-Skript zum Ausschreiben von Zahlen in deutscher Sprache. Es funktioniert konzeptionell nicht nur für beliebig große Zahlen, sondern ist gleichzeitig erstaunlich kompakt.
Nach zwei Jahren kontinuierlicher Verbesserungen und gemeinschaftlichem Golfing wurde eine Größe von lediglich 991 Zeichen erreicht. Um mehr über die Geschichte des Projekts zu erfahren oder den Code selbst anzusehen, besuche das GitHub-Repository.