Projects
Minecraft
Minecraft is a sandbox game published in 2009
and is currently maintained by Mojang Studios.
The game is very simple, yet it offers infinite
possibilities, for the players and for
the developers alike.
Kemuri Craft
Screenshot from the YouTube livestream
I enjoy playing Minecraft myself and especially playing it
with friends. One of my biggest projects is a long-running
semi-anarchy Minecraft server called
"Kemuri Craft".
It had multiple chapters, with the very first world dating
back to September 2020 and with over 100 different players
having joined the project throughout the history, making it
a unique and lore-rich server.
LibrGetter
Cover image of LibrGetter
One of the most tiresome and repetitive tasks in Minecraft is
breaking and replacing lecterns of librarian villagers in
order to obtain a specific enchanting book. The best
solution is to automate this process, which is now possible
thanks to my mod "LibrGetter". It is highly
compatible, configurable and has an active community.
The project is open-source, well-documented and is completely
free to use:
Sources, Documentation, Download.
Version't
Code examples involving Version't
Coding Minecraft mods for the public can be quite notorious,
especially if you aim to support multiple Minecraft versions
at the same time. Codebases begin to diverge quickly and
maintaining them becomes a big hassle. Some developers choose
to retire old versions and support only a span of newer ones at
a time, but my personal approach is to let all of my users
get the new bugfixes and features, regardless of the version
they are personally enjoying the most.
That's where Version't comes in. Version't is an experimental development environment held together by two main components:
That's where Version't comes in. Version't is an experimental development environment held together by two main components:
- Version't Library - a powerful Java Reflection layer, targeted at Minecraft with Fabric, enabling some obscure mechanics like inheritance of classes that don't exist during compilation and obfuscation-independent bytecode
- Version't Toolchain - a Gradle plugin for an easier integration of Version't Library and for generating the mappings for it
Server-Side Development
Hosting, networking, security, scalability - all
of that is of big interest to me. My focus in the
last years was targeted towards everything that
involves server-side development, leading to me
writing a lot of useful projects, while learning
new concepts, resolving my mistakes and
adapting to the flow of maintenance.
Home Cluster
Custom-designed and 3D-printed home cluster
One of my childhood dreams was setting up a
reliable home-built cluster, that is scalable,
performant and is entirely open-source.
And here I am, a proud owner of a custom-designed Raspberry-Pi cluster. After working on the idea for over two years, I have designed a simple hardware-architecture fit to my requirements and a software to orchestrate everything.
And here I am, a proud owner of a custom-designed Raspberry-Pi cluster. After working on the idea for over two years, I have designed a simple hardware-architecture fit to my requirements and a software to orchestrate everything.
Web-based control-panel for the cluster
The result of my work is proudly plugged into
the wall-socket in my apartment and is being
actively used to host a variety of my projects,
including this website!
Here's a list of all components:
Here's a list of all components:
- Cluster Hardware - a list of all hardware elements, budget and setup information
- Cluster Models - custom-made 3D-printable models for the cluster, designed and lisenced by a good colleague
- Cluster Setup - the setup scripts to prepare the hardware for the environment
- gXLg Cluster - the software, that controls my cluster; its' responsibilities are: DNS record management, exposing and deploying services, providing an intuitive control panel
Nulls
While a ton of HTML frameworks already exists,
just using something pre-built was not my favourite
way of doing things.
That's why I built a custom, very flexible and tailored to my likings framework based on Express.js.
The framework is called "nulls" and is available on GitHub. It is actively maintained and is already being used in a couple of my projects, including this very website.
That's why I built a custom, very flexible and tailored to my likings framework based on Express.js.
The framework is called "nulls" and is available on GitHub. It is actively maintained and is already being used in a couple of my projects, including this very website.
Additionally, the framework is extendable
and can be further customised by applying
custom or community-made plugins.
One example for such a plugin would be the Auth Plugin, which adds a secure and simple API to nulls, allowing the developer to handle authentication easily.
One example for such a plugin would be the Auth Plugin, which adds a secure and simple API to nulls, allowing the developer to handle authentication easily.
Experiments
Automation
I've experimented a lot, when trying to automate
tedious processed. And the most prominent
and successful experiments were with CI/CD
pipelines.
CI/CD
Style check through GitHub Actions
A few selected repositories:
- Maven Action and Maven Repo - an easy way to set up a maven repo in seconds using GitHub Pages
- IntelliJ IDEA Format - check code style and formatting using IDEA through GitHub Actions
Mobile Development
Most of the times, the term "Mobile Development"
refers to software, designed to run on mobile
devices. With me hovewer, it's exactly the
opposite - I produce most of the code while
riding the train, chilling outside or
rotting in bed - all of it on my smartphone
(99% of this website was written on my smartphone as well).
nullcord
nullcord logo
Once I started getting more into actual
development,
nullcord
was one of the very first big projects
that I wrote entirely on my smartphone.
It is built very liteweight and is intended to
be used for hosting discord bots with minimal
resources.
cocli
My highest ever cocli status
As much as I like Clash of Code, the experience
with web-based code editors on mobile devices
makes it seem, that such games are not to be
played on the go.
However, as my main device is a smartphone, and I prefer flexibilty over comfort, I developed my own solution for this: cocli - a CLI-based interface for the Clash of Code game. Using this, I even managed to get in the top 30 of the fastest programmers worldwide, while being on a smartphone.
However, as my main device is a smartphone, and I prefer flexibilty over comfort, I developed my own solution for this: cocli - a CLI-based interface for the Clash of Code game. Using this, I even managed to get in the top 30 of the fastest programmers worldwide, while being on a smartphone.
Golfing
One of the areas in coding, that seemingly
exist just for fun, is "code golfing".
The main goal of a code golf challenge
is to achieve some specific behaviour
while using the least amount of characters
and following hard requirements.
While writing dense unintelligible code may seem to have little application in practice, it deepens the understanding of very specific concepts and mechanics.
While writing dense unintelligible code may seem to have little application in practice, it deepens the understanding of very specific concepts and mechanics.
Hello World
Hand-constructed ELF-binary
In January 2023, I stumbled upon an interesting
article talking about creating the smallest
"Hello World" executable on linux x86.
Since I am mostly coding on my smartphone and the architecture uses aarch64, I decided to follow the steps and create my own version for the Aarch64/ARMv8 processor. The result was a 124-byte binary, that writes "Hello World!<newline>" in the terminal, exits regularly with an exit code 0, can be invoked simply from a shell and doesn't require any specific conditions.
As of writing this, my crafted binary is the shortest known implementation among this category.
The hexdump can be downloaded through this link.
Since I am mostly coding on my smartphone and the architecture uses aarch64, I decided to follow the steps and create my own version for the Aarch64/ARMv8 processor. The result was a 124-byte binary, that writes "Hello World!<newline>" in the terminal, exits regularly with an exit code 0, can be invoked simply from a shell and doesn't require any specific conditions.
As of writing this, my crafted binary is the shortest known implementation among this category.
The hexdump can be downloaded through this link.
zahl.py
A gigantic number in German
zahl.py - a python script to write out numbers
in German. Not only does it conceptually work for
any number, but it's also surprisingly small.
After continous improvements and community golfing for 2 years, the smallest achieved size was just 991 characters. To learn more about the history of the project and to see the code yourself, visit the GitHub repo.
After continous improvements and community golfing for 2 years, the smallest achieved size was just 991 characters. To learn more about the history of the project and to see the code yourself, visit the GitHub repo.