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 build desktops, a configuration language, native apps, and the infrastructure to run them. 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 or a native desktop app. Other weeks I replace half my desktop shell or work out how to stop a bad deployment reaching my server.
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, Docker, Kubernetes, 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 Python directly, and modify Java. For heavier Rust, Swift, Kotlin, TypeScript, and QML builds, I direct AI agents, then own the design, review, testing, and integration.
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
A few projects worth a closer look. Desktop systems, native tools, and infrastructure I can run myself.
Wayland compositor / Rust
A Wayland desktop that feels like water, built in Rust on Smithay. Under the ripples, wave transitions, glass, shadows, and window sway is a real tiling compositor with multi-monitor, XWayland, IPC, optional screencasting, and two spatial engines you can switch live.
Core systems
A readable configuration language with typed values, conditions, loops, and precise diagnostics. Native Rust, TypeScript, and Go implementations share a specification and conformance fixtures; the Rust runtime adds sandboxed Lua for applications that need it.
Current interface / macOS
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.
Arch · Hyprland · Quickshell
My daily Arch desktop, built around Hyprland and Quickshell. Twelve native panels, one live settings surface, recoverable dotfile updates, and direct system telemetry without another monitoring daemon in the middle.
Framework / Java
A JSON-driven, multi-loader boss framework with HP phases, custom minions, dialogue, loot, hot reload, and configurable abilities.
Framework / Kotlin
Server-side custom weapons, armor, crafting, curses, set bonuses, charges, and abilities built entirely through JSON. Vanilla clients can connect.
Native launcher
A Qt interface for Prism Launcher: organise instances, browse mods and modpacks, follow live game logs, and diagnose crashes. Requires Prism Launcher.
Qt / C++ / QML ↗Linux audio
Mix your voice and local sounds into one PipeWire microphone, with separate controls for what your chat hears and what you hear. Desktop app, CLI, and independent audio daemon.
Rust / Qt / PipeWire ↗Infrastructure
A Go telemetry API on Kubernetes, with Ansible provisioning, joined-up logs, metrics and traces, and blue-green deployments that abort a bad release before promotion.
Go / k3s / Ansible ↗Published on Modrinth
Bosses, custom items, graves, warps, and admin tools for Minecraft servers. Installation, supported loaders, and release details live on Modrinth.
03 / Repositories
04 / Tools
Kitty on a MacBook Air M4 is the main console, SSH'd out to the Arch desktop, ThinkPad T14 running Gentoo or Arch, and Ubuntu server for everything else.
Home turf
Ship + operate
Build surface
Deploy + recover
Prometheus, Grafana, OpenTelemetry, and Argo Rollouts: see what broke and keep a bad release away from real traffic.
05 / Contact
Linux, infrastructure, self-hosting, Minecraft tooling, or a strange project you cannot stop thinking about are all good reasons to message me.