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 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
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
Ö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:
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
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.
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.
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:
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.
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.
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
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
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
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.
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.
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
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.
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
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.
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.