fiws-page/index.html
2026-08-11 17:30:50 +02:00

451 lines
32 KiB
HTML

<!doctype html>
<html class="no-js" lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Fi3w0 / Alex - Systems Builder</title>
<meta name="description" content="Alex, also known as Fi3w0, builds TideWM, Scorium, Linux and macOS desktop tools, homelab infrastructure, and configurable server tooling.">
<meta property="og:title" content="Fi3w0 / Alex - Systems Builder">
<meta property="og:description" content="TideWM, Scorium, Linux desktops, homelabs, and the systems holding everything up.">
<meta property="og:type" content="website">
<meta property="og:url" content="https://fiwlabs.dev/">
<meta property="og:image" content="https://fiwlabs.dev/img/moonlit-shell.jpg">
<meta property="og:image:alt" content="Moonlit Shell running across a custom Arch Linux desktop">
<meta name="twitter:card" content="summary_large_image">
<link rel="canonical" href="https://fiwlabs.dev/">
<link rel="stylesheet" href="css/style.css?v=10">
<link rel="stylesheet" href="css/editorial.css?v=11">
<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" href="/icon.svg" type="image/svg+xml">
<link rel="apple-touch-icon" href="icon.png">
<link rel="manifest" href="site.webmanifest">
<meta name="theme-color" content="#101a21">
</head>
<body>
<a class="skip-link" href="#main">Skip to content</a>
<div class="page-grid" aria-hidden="true"></div>
<header class="site-header">
<a class="brand" href="#top" aria-label="Fi3w0 home">
<span class="brand-mark" aria-hidden="true">&gt;_</span>
<span>fi3w0</span>
</a>
<button class="nav-toggle" type="button" aria-expanded="false" aria-controls="primary-navigation">
<span>Menu</span><span aria-hidden="true">+</span>
</button>
<nav class="site-nav" id="primary-navigation" aria-label="Primary navigation">
<span class="nav-gooey" aria-hidden="true">
<span class="nav-gooey-blob nav-gooey-blob--trail"></span>
<span class="nav-gooey-blob nav-gooey-blob--lead"></span>
</span>
<a href="#about">About</a>
<a href="#work">Work</a>
<a href="#stack">Stack</a>
<a href="#contact">Contact</a>
<a class="nav-pill" href="https://github.com/Fi3w0" target="_blank" rel="noreferrer">
GitHub <span aria-hidden="true">&nearr;</span>
</a>
</nav>
</header>
<main id="main">
<section class="hero" id="top" aria-labelledby="hero-title">
<div class="hero-liquid" id="hero-liquid" aria-hidden="true">
<pre class="hero-liquid-pre"></pre>
<p class="hero-liquid-hint">click and drag to push the water</p>
</div>
<div class="hero-copy reveal is-visible">
<p class="eyebrow"><span class="status-dot" aria-hidden="true"></span> alex@fiw:~ $ cat about.txt</p>
<h1 id="hero-title">Alex <span id="glitch-name" data-text="/ Fi3w0">/ Fi3w0</span></h1>
<p class="hero-intro">
I build a Wayland desktop, a programmable configuration language, macOS tools, and 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.
</p>
<div class="hero-actions">
<a class="button button-primary" href="#work">What I am building <span aria-hidden="true">&darr;</span></a>
<a class="button button-ghost" href="https://modrinth.com/user/Fi3w0" target="_blank" rel="noreferrer">My Modrinth mods <span aria-hidden="true">&nearr;</span></a>
</div>
<ul class="hero-signals" aria-label="Profile details">
<li><span>01</span> Arch at the desk</li>
<li><span>02</span> Ubuntu on the server</li>
<li><span>03</span> break it, learn, repeat</li>
</ul>
</div>
<aside class="terminal-card reveal is-visible" aria-label="A snapshot of Alex's current work">
<div class="terminal-chrome">
<span>~/workbench</span>
<span class="terminal-state">LOCAL</span>
</div>
<div class="terminal-body">
<p><span class="prompt">$</span> git status --short</p>
<p class="terminal-output"><span>M</span> TideWM/<br><span>M</span> Scorium/<br><span>??</span> next-system/</p>
<p><span class="prompt">$</span> cat NOTES</p>
<p class="terminal-output">wayland + rust / config languages<br>automation / servers / self-hosting</p>
<p class="terminal-note"># there is always something unfinished</p>
</div>
<div class="profile-chip">
<img src="img/avatar.png" alt="Fi3w0's GitHub avatar" width="460" height="460">
<div><strong>Alex / Fi3w0</strong><span>Systems over categories</span></div>
</div>
</aside>
</section>
<div class="signal-strip" aria-label="Core interests">
<div class="signal-track">
<div class="signal-set">
<span class="signal-item">Arch Linux</span><i></i>
<span class="signal-item">Ubuntu Server</span><i></i>
<span class="signal-item">Docker</span><i></i>
<span class="signal-item">Minecraft tooling</span><i></i>
<span class="signal-item">Wayland</span><i></i>
<span class="signal-item"><img class="signal-icon" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22%2311171a%22%3E%3Cpath%20d%3D%22M12%202C7.03%202%203%203.34%203%205s4.03%203%209%203%209-1.34%209-3-4.03-3-9-3z%22%2F%3E%3Cpath%20d%3D%22M3%208.2v3.3c0%201.66%204.03%203%209%203s9-1.34%209-3V8.2c-1.6%201.28-5.1%202.3-9%202.3s-7.4-1.02-9-2.3z%22%2F%3E%3Cpath%20d%3D%22M3%2013.7V17c0%201.66%204.03%203%209%203s9-1.34%209-3v-3.3c-1.6%201.28-5.1%202.3-9%202.3s-7.4-1.02-9-2.3z%22%2F%3E%3C%2Fsvg%3E" alt="">Self-hosting</span><i></i>
<span class="signal-item">Things configured with JSON</span><i></i>
<span class="signal-item">Bash</span><i></i>
<span class="signal-item">Rust</span><i></i>
<span class="signal-item">Go</span><i></i>
<span class="signal-item">Lua</span><i></i>
<span class="signal-item">Kotlin</span><i></i>
<span class="signal-item">TypeScript</span><i></i>
<span class="signal-item">GitHub Actions</span><i></i>
<span class="signal-item">FFmpeg</span><i></i>
<span class="signal-item"><img class="signal-icon" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%229.6%22%20fill%3D%22none%22%20stroke%3D%22%2311171a%22%20stroke-width%3D%221.4%22%2F%3E%3Cpath%20d%3D%22M12%2C2.4%20A9.6%2C9.6%200%200%2C1%2012%2C21.6%20Z%22%20fill%3D%22%2311171a%22%2F%3E%3Ccircle%20cx%3D%228%22%20cy%3D%229.6%22%20r%3D%221.15%22%20fill%3D%22%2311171a%22%2F%3E%3Cpath%20d%3D%22M6.4%2013.8%20Q8.3%2016.6%2010.6%2014.5%22%20fill%3D%22none%22%20stroke%3D%22%2311171a%22%20stroke-width%3D%221.4%22%20stroke-linecap%3D%22round%22%2F%3E%3C%2Fsvg%3E" alt="">macOS</span><i></i>
</div>
<div class="signal-set" aria-hidden="true">
<span class="signal-item">Arch Linux</span><i></i>
<span class="signal-item">Ubuntu Server</span><i></i>
<span class="signal-item">Docker</span><i></i>
<span class="signal-item">Minecraft tooling</span><i></i>
<span class="signal-item">Wayland</span><i></i>
<span class="signal-item"><img class="signal-icon" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22%2311171a%22%3E%3Cpath%20d%3D%22M12%202C7.03%202%203%203.34%203%205s4.03%203%209%203%209-1.34%209-3-4.03-3-9-3z%22%2F%3E%3Cpath%20d%3D%22M3%208.2v3.3c0%201.66%204.03%203%209%203s9-1.34%209-3V8.2c-1.6%201.28-5.1%202.3-9%202.3s-7.4-1.02-9-2.3z%22%2F%3E%3Cpath%20d%3D%22M3%2013.7V17c0%201.66%204.03%203%209%203s9-1.34%209-3v-3.3c-1.6%201.28-5.1%202.3-9%202.3s-7.4-1.02-9-2.3z%22%2F%3E%3C%2Fsvg%3E" alt="">Self-hosting</span><i></i>
<span class="signal-item">Things configured with JSON</span><i></i>
<span class="signal-item">Bash</span><i></i>
<span class="signal-item">Rust</span><i></i>
<span class="signal-item">Go</span><i></i>
<span class="signal-item">Lua</span><i></i>
<span class="signal-item">Kotlin</span><i></i>
<span class="signal-item">TypeScript</span><i></i>
<span class="signal-item">GitHub Actions</span><i></i>
<span class="signal-item">FFmpeg</span><i></i>
<span class="signal-item"><img class="signal-icon" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%229.6%22%20fill%3D%22none%22%20stroke%3D%22%2311171a%22%20stroke-width%3D%221.4%22%2F%3E%3Cpath%20d%3D%22M12%2C2.4%20A9.6%2C9.6%200%200%2C1%2012%2C21.6%20Z%22%20fill%3D%22%2311171a%22%2F%3E%3Ccircle%20cx%3D%228%22%20cy%3D%229.6%22%20r%3D%221.15%22%20fill%3D%22%2311171a%22%2F%3E%3Cpath%20d%3D%22M6.4%2013.8%20Q8.3%2016.6%2010.6%2014.5%22%20fill%3D%22none%22%20stroke%3D%22%2311171a%22%20stroke-width%3D%221.4%22%20stroke-linecap%3D%22round%22%2F%3E%3C%2Fsvg%3E" alt="">macOS</span><i></i>
</div>
</div>
</div>
<section class="section about-section" id="about" aria-labelledby="about-title">
<header class="section-heading reveal">
<p class="section-index">01 / About</p>
<h2 id="about-title">What I actually do.</h2>
</header>
<div class="about-layout">
<blockquote class="about-quote reveal">
<span class="quote-mark" aria-hidden="true">&ldquo;</span>
<p>I care more about the whole machine than winning an argument about one language.</p>
<footer>Design it, configure it, deploy it, then fix the boring parts.</footer>
</blockquote>
<div class="about-copy reveal">
<p class="lead">
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.
</p>
<p>
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.
</p>
<p>
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.
</p>
<p>
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.
</p>
<div class="language-line">
<span>Ukrainian + Russian</span><span>Spanish</span><span>English C1</span>
</div>
</div>
</div>
<div class="method-grid">
<article class="method-card reveal">
<span>01</span><h3>Start with the mess</h3><p>Work out the data, failure cases, and who has to maintain it before choosing the clever part.</p>
</article>
<article class="method-card reveal">
<span>02</span><h3>Automate repeats</h3><p>If I have to do it twice, it probably needs a script, an installer, or a CI job.</p>
</article>
<article class="method-card reveal">
<span>03</span><h3>Make it recoverable</h3><p>Reboots, bad input, old versions, and my own mistakes are normal operating conditions.</p>
</article>
</div>
</section>
<section class="section work-section" id="work" aria-labelledby="work-title">
<header class="section-heading section-heading-row reveal">
<div><p class="section-index">02 / Work</p><h2 id="work-title">Projects, tools, experiments.</h2></div>
<p>Public repositories, installable mods, and rougher ideas that started on my own machines.</p>
</header>
<article class="current-project current-project-tide reveal" aria-labelledby="tidewm-title">
<div class="current-project-main">
<div class="current-meta"><span><i aria-hidden="true"></i> Functional pre-release</span><span>v0.90 / daily-driver path</span></div>
<p class="current-kicker">Wayland compositor / Rust</p>
<div class="tide-heading">
<img class="tide-mark" src="img/tidewm-logo.png" alt="" width="48" height="48" loading="lazy">
<h3 id="tidewm-title">TideWM</h3>
</div>
<p>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, screencasting, and two spatial engines you can switch live.</p>
<div class="tide-proof" aria-label="TideWM project facts">
<div><strong>2</strong><span>spatial engines</span></div>
<div><strong>~63 MB</strong><span>nine glass windows</span></div>
<div><strong>live</strong><span>config reload</span></div>
</div>
<div class="tag-row current-tags"><span>Smithay</span><span>Rust</span><span>Wayland</span><span>GPL-3.0</span></div>
<a class="text-link current-repo-link" href="https://github.com/Fi3w0/TideWM" target="_blank" rel="noreferrer">View repository <span aria-hidden="true">&nearr;</span></a>
</div>
<div class="current-roadmap">
<p>Core systems</p>
<ol>
<li><span>01</span><div><strong>Classic</strong><small>BSP, master/stack, cascade, workspaces, Depth Deck</small></div><b>done</b></li>
<li><span>02</span><div><strong>Ocean</strong><small>One continuous 2D world with reefs, cameras, and bookmarks</small></div><b>done</b></li>
<li><span>03</span><div><strong>Water stack</strong><small>Ripples, waves, glass, caustics, sway, depth, and buoyancy</small></div><b>done</b></li>
<li><span>04</span><div><strong>Next pass</strong><small>More hardware coverage, feel tuning, Nvidia native, AUR</small></div><b>testing</b></li>
</ol>
</div>
<span class="current-watermark" aria-hidden="true">TIDE</span>
</article>
<article class="project-feature project-feature-scorium reveal" data-repo="Scorium">
<a class="project-visual project-visual-scorium" href="https://github.com/Fi3w0/Scorium" target="_blank" rel="noreferrer" aria-label="View Scorium on GitHub">
<span class="scorium-window" aria-hidden="true">
<span class="scorium-titlebar"><b>SCORIUM</b><span>examples/services.scor</span><i>v0.1.0</i></span>
<code class="scorium-code"><span class="scorium-line"><span class="scorium-dim">01</span> <em>@base_port</em> = <strong>8000</strong></span><span class="scorium-line"><span class="scorium-dim">02</span></span><span class="scorium-line"><span class="scorium-dim">03</span> <b>server</b> {</span><span class="scorium-line"><span class="scorium-dim">04</span><span class="scorium-indent"></span>host = <i>localhost</i></span><span class="scorium-line"><span class="scorium-dim">05</span><span class="scorium-indent"></span>port = <em>base_port</em> + <strong>80</strong></span><span class="scorium-line"><span class="scorium-dim">06</span><span class="scorium-indent"></span>timeout = <strong>5s</strong></span><span class="scorium-line"><span class="scorium-dim">07</span> }</span><span class="scorium-line"><span class="scorium-dim">08</span></span><span class="scorium-line"><span class="scorium-dim">09</span> <b>for</b> i = <strong>1</strong>, <strong>3</strong> <b>do</b></span><span class="scorium-line"><span class="scorium-dim">10</span><span class="scorium-indent"></span>worker {</span><span class="scorium-line"><span class="scorium-dim">11</span><span class="scorium-indent scorium-indent-double"></span>name = worker-$i</span><span class="scorium-line"><span class="scorium-dim">12</span><span class="scorium-indent"></span>}</span><span class="scorium-line"><span class="scorium-dim">13</span> <b>end</b></span></code>
<span class="scorium-diagnostic"><i></i> parsed · sandboxed · schema valid</span>
</span>
<span class="scorium-pipeline" aria-hidden="true"><b>source</b><i>&rarr;</i><b>parse</b><i>&rarr;</i><b>evaluate</b><i>&rarr;</i><b>validate</b><i>&rarr;</i><b>apply</b></span>
<span class="scorium-watermark" aria-hidden="true">.SCOR</span>
<span class="image-label">Readable config / programmable core</span>
</a>
<div class="project-feature-copy">
<div class="project-meta"><span>Newest release</span><span>Rust / Lua 5.4 / pre-1.0</span></div>
<h3>Scorium</h3>
<p>A readable, embeddable configuration framework: declarative for simple files, programmable when repetition or conditions appear. It combines typed values, precise diagnostics, built-in schema validation, a canonical formatter, and sandboxed Lua—with no filesystem, network, or process access by default.</p>
<ul class="project-facts">
<li><strong>5</strong><span>focused Rust crates</span></li>
<li><strong>5</strong><span>CLI workflows</span></li>
<li><strong>0</strong><span>ambient system access</span></li>
</ul>
<div class="tag-row scorium-tags"><span>Source-available</span><span>PolyForm Strict</span><span>Sandboxed</span></div>
<a class="text-link" href="https://github.com/Fi3w0/Scorium" target="_blank" rel="noreferrer">Read the repository <span aria-hidden="true">&nearr;</span></a>
</div>
</article>
<article class="project-feature reveal" data-repo="Flux">
<a class="project-visual project-visual-flux" href="https://github.com/Fi3w0/Flux" target="_blank" rel="noreferrer" aria-label="View Flux on GitHub">
<span class="flux-product-frame">
<span class="flux-product-bar" aria-hidden="true"><span><i></i><i></i><i></i></span><b>Flux / Workbench</b><em>LOCAL</em></span>
<img class="flux-product-shot" src="img/flux-overview.jpg" alt="Flux media workbench showing a download ready to add to the processing queue" width="1600" height="922" loading="lazy">
</span>
<span class="flux-product-caption" aria-hidden="true">
<img src="img/flux-icon.png" alt="" width="256" height="256" loading="lazy">
<span><strong>Native by design</strong><small>SwiftUI · AppKit · local processing</small></span>
</span>
<span class="image-label">Current interface / macOS</span>
</a>
<div class="project-feature-copy">
<div class="project-meta"><span>Native media workbench</span><span>SwiftUI / AppKit / macOS</span></div>
<h3>Flux</h3>
<p>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.</p>
<ul class="project-facts">
<li><strong>7</strong><span>media engines</span></li>
<li><strong>0</strong><span>telemetry</span></li>
<li><strong>100%</strong><span>local processing</span></li>
</ul>
<a class="text-link" href="https://github.com/Fi3w0/Flux" target="_blank" rel="noreferrer">View repository <span aria-hidden="true">&nearr;</span></a>
</div>
</article>
<article class="project-feature reveal" data-repo="Moonlit-shell">
<a class="project-visual project-visual-moonlit" href="https://github.com/Fi3w0/Moonlit-shell" target="_blank" rel="noreferrer" aria-label="View Moonlit Shell on GitHub">
<span class="moonlit-screen">
<span class="moonlit-camera" aria-hidden="true"></span>
<img src="img/moonlit-shell.jpg" alt="Moonlit Shell running on Arch Linux with its custom top panels over a nocturnal landscape" width="1600" height="900" loading="lazy">
<span class="moonlit-session" aria-hidden="true"><b>Moonlit Shell</b><span>ThinkPad T14 · live session</span><i>ACTIVE</i></span>
</span>
<span class="moonlit-specs" aria-hidden="true"><span><b>12</b> native panels</span><span><b>/proc</b> direct telemetry</span><span><b>safe</b> dotfile updates</span></span>
<span class="image-label">Arch · Hyprland · Quickshell</span>
</a>
<div class="project-feature-copy">
<div class="project-meta"><span>Daily system</span><span>QML / Go / Linux</span></div>
<h3>Moonlit Shell</h3>
<p>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.</p>
<ul class="project-facts">
<li><strong>12</strong><span>native panels</span></li>
<li><strong>1</strong><span>live config</span></li>
<li><strong>0</strong><span>glue daemons</span></li>
</ul>
<a class="text-link" href="https://github.com/Fi3w0/Moonlit-shell" target="_blank" rel="noreferrer">View repository <span aria-hidden="true">&nearr;</span></a>
</div>
</article>
<div class="project-grid">
<article class="project-card project-card-warm reveal" data-repo="Fiw-Bosses">
<div class="project-card-top"><span class="project-number">01</span><span class="repo-live"><i></i> published</span></div>
<div>
<p class="project-kicker">Framework / Java</p>
<h3>FIW Bosses</h3>
<p>A JSON-driven, multi-loader boss framework with HP phases, custom minions, dialogue, loot, hot reload, and more than 50 configurable abilities.</p>
</div>
<div class="card-footer">
<div class="tag-row"><span>Fabric</span><span>NeoForge</span><span>Forge</span></div>
<a href="https://github.com/Fi3w0/Fiw-Bosses" target="_blank" rel="noreferrer" aria-label="View FIW Bosses on GitHub">&nearr;</a>
</div>
</article>
<article class="project-card project-card-cool reveal" data-repo="Fiw-Tools">
<div class="project-card-top"><span class="project-number">02</span><span class="repo-live"><i></i> published</span></div>
<div>
<p class="project-kicker">Framework / Kotlin</p>
<h3>FIW Custom Items</h3>
<p>Server-side custom weapons, armor, crafting, curses, set bonuses, charges, and abilities built entirely through JSON. Vanilla clients can connect.</p>
</div>
<div class="card-footer">
<div class="tag-row"><span>JSON</span><span>Hot reload</span><span>Server-side</span></div>
<a href="https://github.com/Fi3w0/Fiw-Tools" target="_blank" rel="noreferrer" aria-label="View FIW Custom Items on GitHub">&nearr;</a>
</div>
</article>
</div>
<div class="project-list">
<article class="project-row reveal" data-repo="Fiw-Anticheat">
<span class="row-index">03</span>
<div><p>Security tooling</p><h3>FIW AntiCheat</h3></div>
<p>Nonce challenges, mod signatures, resource-pack auditing, and honest limits across six loader/version targets.</p>
<span class="row-tech">Java / SHA-256</span>
<a href="https://github.com/Fi3w0/Fiw-Anticheat" target="_blank" rel="noreferrer" aria-label="View FIW AntiCheat on GitHub">&nearr;</a>
</article>
<article class="project-row reveal" data-repo="Fiw-Graves">
<span class="row-index">04</span>
<div><p>Reliability</p><h3>FIW Graves</h3></div>
<p>Packet-only grave markers, world-native persistence, rollback history, and a second loot safety net.</p>
<span class="row-tech">Java / Packets</span>
<a href="https://github.com/Fi3w0/Fiw-Graves" target="_blank" rel="noreferrer" aria-label="View FIW Graves on GitHub">&nearr;</a>
</article>
<article class="project-row reveal">
<span class="row-index">05</span>
<div><p>Server operations</p><h3>FIW Admin Utilities</h3></div>
<p>Maintenance mode, lag watchdog, entity sweeping, vanish, freeze, and item bans in one lightweight admin mod.</p>
<span class="row-tech">Fabric / NeoForge</span>
<a href="https://modrinth.com/mod/fiw-admin-utilitys" target="_blank" rel="noreferrer" aria-label="View FIW Admin Utilities on Modrinth">&nearr;</a>
</article>
</div>
<div class="modrinth-panel reveal">
<header class="modrinth-heading">
<div>
<p class="modrinth-label"><span aria-hidden="true"></span> Published on Modrinth</p>
<h3>Mods people can install.</h3>
</div>
<a class="text-link" href="https://modrinth.com/user/Fi3w0" target="_blank" rel="noreferrer">View creator profile <span aria-hidden="true">&nearr;</span></a>
</header>
<p class="modrinth-summary">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.</p>
<div class="modrinth-stats">
<div><strong>7</strong><span>mods published</span></div>
<div><strong>3</strong><span>loaders supported</span></div>
<div><strong>1</strong><span>creator profile</span></div>
</div>
</div>
</section>
<section class="section archive-section" aria-labelledby="archive-title">
<header class="section-heading section-heading-row reveal">
<div><p class="section-index">03 / Repositories</p><h2 id="archive-title">Other things I made.</h2></div>
<a class="text-link" href="https://github.com/Fi3w0?tab=repositories" target="_blank" rel="noreferrer">All repositories <span aria-hidden="true">&nearr;</span></a>
</header>
<div class="archive-grid">
<a class="archive-item reveal" href="https://github.com/Fi3w0/Fiw-Warp" target="_blank" rel="noreferrer"><span>Fiw Warp</span><small>Kotlin / server teleports</small><b>&nearr;</b></a>
<a class="archive-item reveal" href="https://github.com/Fi3w0/Fiw-Clock" target="_blank" rel="noreferrer"><span>Tickwatch</span><small>Crash-safe player stats</small><b>&nearr;</b></a>
<a class="archive-item reveal" href="https://github.com/Fi3w0/Firefox-Privacy" target="_blank" rel="noreferrer"><span>Firefox Privacy</span><small>Cross-platform hardening</small><b>&nearr;</b></a>
<a class="archive-item reveal" href="https://github.com/Fi3w0/HomePage" target="_blank" rel="noreferrer"><span>HomePage</span><small>Live homelab dashboard</small><b>&nearr;</b></a>
<a class="archive-item reveal" href="https://github.com/Fi3w0/FiwStoryMod" target="_blank" rel="noreferrer"><span>Fiw Story Mod</span><small>SMP artifacts + lore</small><b>&nearr;</b></a>
<a class="archive-item reveal" href="https://github.com/Fi3w0/Naoya-Mod" target="_blank" rel="noreferrer"><span>Naoya Mod</span><small>Fabric ability system</small><b>&nearr;</b></a>
<a class="archive-item reveal" href="https://github.com/Fi3w0/DevourerPlugin" target="_blank" rel="noreferrer"><span>Devourer Plugin</span><small>Asymmetric Paper PvP</small><b>&nearr;</b></a>
<a class="archive-item reveal" href="https://github.com/Fi3w0/Fi3w0-Hyprland" target="_blank" rel="noreferrer"><span>Fi3w0 Hyprland</span><small>The original daily dots</small><b>&nearr;</b></a>
<a class="archive-item reveal" href="https://github.com/Fi3w0/Fiw-ModChecklist" target="_blank" rel="noreferrer"><span>Fiw ModChecklist</span><small>Whitelist prototype</small><b>&nearr;</b></a>
<a class="archive-item reveal" href="https://github.com/Fi3w0/VeeBotV4.2" target="_blank" rel="noreferrer"><span>VeeBot V4.2</span><small>Python / Discord</small><b>&nearr;</b></a>
<a class="archive-item reveal archive-item-paused" href="https://github.com/Fi3w0/Brota" target="_blank" rel="noreferrer"><span>Brota</span><small>Paused mobile prototype</small><b>&nearr;</b></a>
</div>
</section>
<section class="section stack-section" id="stack" aria-labelledby="stack-title">
<header class="section-heading reveal">
<p class="section-index">04 / Tools</p>
<h2 id="stack-title">What is usually open in my terminal.</h2>
<p class="stack-intro">Kitty on a MacBook Air M4 is the main console, SSH'd out to the Arch desktop, ThinkPad T14, and Ubuntu server for everything else.</p>
</header>
<div class="stack-layout">
<article class="stack-card stack-card-main reveal">
<p class="stack-label">Home turf</p>
<h3>Linux / systems</h3>
<div class="stack-tags"><span class="tag-strong">Arch Linux</span><span class="tag-strong">Bash</span><span>Ubuntu Server</span><span>systemd</span><span>SSH</span><span>Networking</span></div>
</article>
<article class="stack-card reveal">
<p class="stack-label">Ship + operate</p>
<h3>Infrastructure</h3>
<div class="stack-tags"><span class="tag-strong">Docker</span><span class="tag-strong">Compose</span><span>Traefik</span><span>Portainer</span><span>GitHub Actions</span><span>Backups</span></div>
</article>
<article class="stack-card reveal">
<p class="stack-label">Build surface</p>
<h3>Code + config</h3>
<div class="stack-tags"><span class="tag-strong">Go</span><span class="tag-strong">Lua</span><span>Rust / AI-assisted</span><span>Java</span><span>Kotlin</span><span>TypeScript</span><span>QML</span><span>JSON</span></div>
</article>
<article class="stack-card stack-card-learning reveal">
<p class="stack-label">Learning next</p>
<h3>Kubernetes, Terraform, Ansible</h3>
<p>I am learning these when a real problem gives me a reason, not just to collect more logos.</p>
</article>
</div>
</section>
<section class="contact-section" id="contact" aria-labelledby="contact-title">
<div class="contact-orbit" aria-hidden="true"><span></span><span></span><span></span></div>
<p class="section-index reveal">05 / Contact</p>
<h2 id="contact-title" class="reveal">Say hello.</h2>
<p class="contact-copy reveal">Linux, infrastructure, self-hosting, Minecraft tooling, or a strange project you cannot stop thinking about are all good reasons to message me.</p>
<div class="contact-links reveal">
<a href="mailto:alex@fiwlabs.dev"><span>Email</span><small>alex@fiwlabs.dev</small><b>&rarr;</b></a>
<a href="https://github.com/Fi3w0" target="_blank" rel="noreferrer"><span>GitHub</span><small>@Fi3w0</small><b>&nearr;</b></a>
<a href="https://t.me/fi3w0" target="_blank" rel="noreferrer"><span>Telegram</span><small>@fi3w0</small><b>&nearr;</b></a>
<button type="button" id="copy-discord"><span>Discord</span><small id="discord-label">fi3w0 - click to copy</small><b aria-hidden="true">+</b></button>
</div>
<p class="copy-status" id="copy-status" role="status" aria-live="polite"></p>
</section>
</main>
<footer class="site-footer">
<a class="brand" href="#top"><span class="brand-mark" aria-hidden="true">&gt;_</span><span>fi3w0</span></a>
<p><a href="https://git.fiwlabs.dev/" target="_blank" rel="noreferrer">git.fiwlabs.dev</a> / self-hosted Git</p>
<p class="footer-prompt" aria-hidden="true"><span class="prompt">$</span> exit 0<span class="cursor-blink">_</span></p>
<p>&copy; <span id="year">2026</span> Alex / Fi3w0</p>
</footer>
<script src="js/app.js?v=9" defer></script>
</body>
</html>