Start with the mess
Work out the data, failure cases, and who has to maintain it before choosing the clever part.
alex@fiw:~ $ cat about.txt
I make Linux and macOS desktop tools, run a homelab, and publish Minecraft server mods. Most of my projects start as something I wanted for my own machine or server, then grow until they are useful to somebody else too.
01 / About
I care more about the whole machine than winning an argument about one language.
Some weeks I am building a Minecraft framework. Other weeks I replace half my desktop shell or add something unnecessary to the mini PC under my desk.
My projects jump between low-level desktop work and data-driven server tools, but the part I enjoy is the same: turning rough pieces into something I can run and maintain myself.
Linux, systemd, Docker, Traefik, backups, and CI pipelines are familiar territory. I like hot reload, readable config files, updates that can fail safely, and logs that say what went wrong.
I write Bash, Go, Lua, and modify Java directly. For Rust, Swift, and larger Kotlin, TypeScript, Python, and QML builds, I use AI agents heavily, then review, test, and integrate the result myself.
Work out the data, failure cases, and who has to maintain it before choosing the clever part.
If I have to do it twice, it probably needs a script, an installer, or a CI job.
Reboots, bad input, old versions, and my own mistakes are normal operating conditions.
02 / Work
Public repositories, installable mods, and rougher ideas that started on my own machines.
Wayland compositor / Rust
A water-themed Wayland compositor built on Smithay, made because I wanted to see how far I could take it. Tiling (BSP and master/stack), multi-monitor, XWayland, workspaces, and IPC already run as my daily driver; the signature aqua render effects are next.
View repositoryProject shape
A native macOS media workbench: convert, download, edit, and compose media in one focused app. FFmpeg, yt-dlp, and Apple Vision underneath, pre-flight checks that explain failures before a job ever starts, and everything processed locally.
Daily driver / ThinkPad T14
This is the desktop I actually use: Arch, Hyprland, and Quickshell with twelve panels, a live settings app, safe dotfile updates, and no monitoring daemon between the UI and /proc.
Framework / Java
A JSON-driven, multi-loader boss framework with HP phases, custom minions, dialogue, loot, hot reload, and more than 50 configurable abilities.
Framework / Kotlin
Server-side custom weapons, armor, crafting, curses, set bonuses, charges, and abilities built entirely through JSON. Vanilla clients can connect.
Security tooling
Nonce challenges, mod signatures, resource-pack auditing, and honest limits across six loader/version targets.
Java / SHA-256 ↗Reliability
Packet-only grave markers, world-native persistence, rollback history, and a second loot safety net.
Java / Packets ↗Server operations
Maintenance mode, lag watchdog, entity sweeping, vanish, freeze, and item bans in one lightweight admin mod.
Fabric / NeoForge ↗Published on Modrinth
Every mod above (plus Warp, Graves, and Tickwatch from the archive) ships through one Modrinth profile — same JSON-config philosophy, same hot reload, across Fabric, Forge, and NeoForge.
03 / Repositories
04 / Tools
Kitty as the daily emulator, running on a MacBook (macOS) — my main device — SSH'd out to the Arch desktop and the Ubuntu server for everything else.
Home turf
Ship + operate
Build surface
Learning next
I am learning these when a real problem gives me a reason, not just to collect more logos.
05 / Contact
Linux, infrastructure, self-hosting, Minecraft tooling, or a strange project you cannot stop thinking about are all good reasons to message me.