<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Hi, I'm *squid*</title><link>https://orivega.io/</link><description>My name is tom</description><generator>Hugo</generator><language>en</language><lastBuildDate>Fri, 16 Oct 2026 08:12:00 +0000</lastBuildDate><atom:link href="https://orivega.io/index.xml" rel="self" type="application/rss+xml"/><item><title>What I Self-Host, What I Don't, and Why</title><link>https://orivega.io/what-i-self-host/</link><pubDate>Fri, 16 Oct 2026 08:12:00 +0000</pubDate><guid>https://orivega.io/what-i-self-host/</guid><description>Forty-four apps on five ThinkCentres, two NAS boxes, one rented server, and a list of things I tried and threw out.</description></item><item><title>Everyone's installing local LLMs. I bought a rack.</title><link>https://orivega.io/everyone-installing-local-llms-i-bought-a-rack/</link><pubDate>Mon, 20 Jul 2026 08:00:00 +0000</pubDate><guid>https://orivega.io/everyone-installing-local-llms-i-bought-a-rack/</guid><description>While everyone chases local LLMs, I did the unfashionable thing and rebuilt my homelab&amp;#39;s foundation: a rack, a €25 switch and a €35 router. The plumbing is where the real engineering lives.</description></item><item><title>Moongate V2 Dev Log #5: GM Tools, Template Tooling, ModernUO Imports, and Smarter Guards</title><link>https://orivega.io/moongate-v2-dev-log-5-gm-tools-template-tooling-modernuo-imports-and-smarter-guards/</link><pubDate>Thu, 26 Mar 2026 23:00:00 +0000</pubDate><guid>https://orivega.io/moongate-v2-dev-log-5-gm-tools-template-tooling-modernuo-imports-and-smarter-guards/</guid><description>This week I added a GM menu, a template validation tool, a dotnet new plugin template, deeper ModernUO import tooling, a cleaner AI runtime, and much better city guards.</description></item><item><title>Moongate V2 Dev Log #4: Combat, Corpses, Scripted NPCs, and a Cleaner Architecture</title><link>https://orivega.io/moongate-v2-dev-log-4-combat-corpses-scripted-npcs-and-a-cleaner-architecture/</link><pubDate>Thu, 19 Mar 2026 23:00:00 +0000</pubDate><guid>https://orivega.io/moongate-v2-dev-log-4-combat-corpses-scripted-npcs-and-a-cleaner-architecture/</guid><description>This week I added combat, corpses, loot chests, scripted NPC dialogue, OpenAI-backed NPC behavior, scheduled events, plugin infrastructure, and a major persistence cleanup to Moongate.</description></item><item><title>Moongate V2 Dev Log #3: Player Portal, Maps, Books, and a .NET Bug I Didn't Own</title><link>https://orivega.io/moongate-v2-dev-log-3-player-portal-maps-books-and-a-net-bug-i-didnt-own/</link><pubDate>Thu, 12 Mar 2026 23:00:00 +0000</pubDate><guid>https://orivega.io/moongate-v2-dev-log-3-player-portal-maps-books-and-a-net-bug-i-didnt-own/</guid><description>This week I shipped a player portal, better world visibility tools, writable books, and lost two days to a .NET bug that turned out not to be mine.</description></item><item><title>Moongate v2 Dev Log #2 — Three Bugs That Forced an Architecture Upgrade</title><link>https://orivega.io/moongate-v2-dev-log-2-three-bugs-that-forced-an-architecture-upgrade/</link><pubDate>Fri, 06 Mar 2026 11:36:00 +0000</pubDate><guid>https://orivega.io/moongate-v2-dev-log-2-three-bugs-that-forced-an-architecture-upgrade/</guid><description>Three hard production issues in Moongate v2: MemoryPack+AOT crashes, doors shifting when toggled, and single-thread bottlenecks under load.</description></item><item><title>Moongate v2 Dev Log #1: When Your Architecture Lies to You</title><link>https://orivega.io/moongate-v2-dev-log-1-when-your-architecture-lies-to-you/</link><pubDate>Thu, 26 Feb 2026 23:00:00 +0000</pubDate><guid>https://orivega.io/moongate-v2-dev-log-1-when-your-architecture-lies-to-you/</guid><description>How I fixed the bootstrap, added source generators, and scripted items with Lua in Moongate v2 -- a modern Ultima Online server built with .NET 10.</description></item><item><title>Moongate v2: Rewriting a Ultima Online Server From Scratch (Because I Wanted To)</title><link>https://orivega.io/moongate-v2-rewriting-a-ultima-online-server-from-scratch-because-i-wanted-to/</link><pubDate>Fri, 20 Feb 2026 23:00:00 +0000</pubDate><guid>https://orivega.io/moongate-v2-rewriting-a-ultima-online-server-from-scratch-because-i-wanted-to/</guid><description>A personal story about nostalgia, a terrible job, and rewriting an Ultima Online server emulator from scratch with .NET 10 and NativeAOT.</description></item><item><title>Small Objectives, AI-Driven Architecture: How Abandoning Dark Lilly Built LillyQuest</title><link>https://orivega.io/small-objectives-ai-driven-architecture-how-abandoning-dark-lilly-built-lillyquest/</link><pubDate>Fri, 23 Jan 2026 11:56:00 +0000</pubDate><guid>https://orivega.io/small-objectives-ai-driven-architecture-how-abandoning-dark-lilly-built-lillyquest/</guid><description>&lt;p&gt;&lt;img alt="lillyquest_logo" loading="lazy" src="https://orivega.io/images/lillyquest_logo.webp"&gt;&lt;/p&gt;
&lt;p&gt;Sometimes the only way to understand constraint-driven design is to ignore constraints entirely, realize you&amp;rsquo;re drowning, and start over.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s the story of Dark Lilly and LillyQuest.&lt;/p&gt;
&lt;h2 id="part-1-the-ambitious-mistake"&gt;Part 1: The Ambitious Mistake&lt;/h2&gt;
&lt;p&gt;In November 2026, I started Dark Lilly. A DOOM-like engine. 3D. OpenGL 4.1. Sector-based geometry with portal rendering. Room-over-room architecture. Full BSP tree implementation. A complete demo level in 10 weeks, working 1.5 hours per day&lt;/p&gt;
&lt;p&gt;On paper, it made sense. I&amp;rsquo;d written about &lt;a href="https://orivega.io/building-a-doom-like-engine-in-2026-discipline-through-constraints/"&gt;building engines through constraints&lt;/a&gt;. DOOM&amp;rsquo;s architecture—sectors and portals—felt like the perfect constraint. Limited but powerful. Reductive but elegant.&lt;/p&gt;</description></item><item><title>Life as a CTO – Part 1</title><link>https://orivega.io/life-as-a-cto-part-1/</link><pubDate>Thu, 15 Jan 2026 11:00:00 +0000</pubDate><guid>https://orivega.io/life-as-a-cto-part-1/</guid><description>First entry of a personal series about the real, human side of being a CTO.</description></item><item><title>Building a DOOM-Like Engine in 2026: Discipline Through Constraints</title><link>https://orivega.io/building-a-doom-like-engine-in-2026-discipline-through-constraints/</link><pubDate>Wed, 14 Jan 2026 19:53:00 +0000</pubDate><guid>https://orivega.io/building-a-doom-like-engine-in-2026-discipline-through-constraints/</guid><description>&lt;p&gt;&lt;img alt="Darklilly" loading="lazy" src="https://orivega.io/images/darklilly.webp"&gt;&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m building (Dark) Lilly Engine, a 3D DOOM-inspired engine in C# with OpenGL. Not to clone DOOM. Not to romanticize the past. But because rebuilding foundational ideas until they&amp;rsquo;re &lt;em&gt;yours&lt;/em&gt; is the only way to truly understand them.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Sometimes the only way to understand a system is to rebuild it.
Not copy it. Not romanticize it. Just rebuild the ideas until they&amp;rsquo;re yours.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m not building a DOOM clone.
I&amp;rsquo;m building an engine that grew from the same questions DOOM answered, under different constraints.&lt;/p&gt;</description></item><item><title>The Book That Pulled Me Back Into DOOM’s Engine Room</title><link>https://orivega.io/the-book-that-pulled-me-back-into-dooms-engine-room/</link><pubDate>Sun, 11 Jan 2026 19:29:00 +0000</pubDate><guid>https://orivega.io/the-book-that-pulled-me-back-into-dooms-engine-room/</guid><description>&lt;p&gt;&lt;img alt="IMG_2654" loading="lazy" src="https://orivega.io/images/img_2654.webp"&gt;&lt;/p&gt;
&lt;h1 id="why-i-bought-the-game-engine-black-book-doom"&gt;Why I Bought the &lt;em&gt;Game Engine Black Book: DOOM&lt;/em&gt;&lt;/h1&gt;
&lt;p&gt;I recently picked up Fabien Sanglard’s &lt;em&gt;Game Engine Black Book: DOOM&lt;/em&gt;.&lt;br&gt;
Not as a collector’s item, not as a coffee-table trophy, but because DOOM has always been an unfinished chapter for me.&lt;/p&gt;
&lt;p&gt;It was the second game I ever fell in love with.&lt;br&gt;
The first one was Wolfenstein 3D, which ran fine on my old 486 (yes, IBM PS/2). DOOM didn’t. I would launch it, stare at a frozen screen, and realize the hardware simply wasn’t enough. So I played DOOM at friends’ houses, glued to the monitor, half jealous and half hypnotized.&lt;/p&gt;</description></item><item><title>Day 45: Using Linux as My Primary Development Environment: A Technical Review After 45 Days</title><link>https://orivega.io/day-45-using-linux-as-my-primary-development-environment-a-technical-review-after-45-days/</link><pubDate>Wed, 07 Jan 2026 09:04:00 +0000</pubDate><guid>https://orivega.io/day-45-using-linux-as-my-primary-development-environment-a-technical-review-after-45-days/</guid><description>&lt;p&gt;&lt;img alt="99663eee9d43bda71dc57434a7446320" loading="lazy" src="https://orivega.io/images/99663eee9d43bda71dc57434a7446320.webp"&gt;&lt;/p&gt;
&lt;p&gt;It has now been 45 days since I started my “100 Days of Linux” journey on November 24th. The goal was simple but radical: replace macOS and Windows entirely and verify whether Linux could cover &lt;em&gt;everything&lt;/em&gt;—development, gaming, productivity, graphics, and daily use—without compromise.&lt;/p&gt;
&lt;p&gt;The conclusion so far is clear: Linux has become my main system, and it works flawlessly.&lt;br&gt;
Below is my technical review as of January 7th, 2026.&lt;/p&gt;</description></item><item><title>100 Days Linux Challenge: Progress Update</title><link>https://orivega.io/100-days-linux-challenge-progress-update/</link><pubDate>Wed, 17 Dec 2025 09:26:00 +0000</pubDate><guid>https://orivega.io/100-days-linux-challenge-progress-update/</guid><description>&lt;p&gt;It’s been &lt;strong&gt;23 days&lt;/strong&gt; since I started my &lt;strong&gt;100 Days of Linux&lt;/strong&gt; challenge, and I wanted to share a short recap.&lt;/p&gt;
&lt;h2 id="daily-use--gaming"&gt;Daily Use &amp;amp; Gaming&lt;/h2&gt;
&lt;p&gt;I feel great using Linux. I’ve been on Linux for years, but I had never really committed to a &lt;strong&gt;full migration&lt;/strong&gt; including gaming.&lt;/p&gt;
&lt;p&gt;Now I have.&lt;br&gt;
At home I run a PC with an &lt;strong&gt;RTX 5080&lt;/strong&gt;, and thanks to &lt;strong&gt;Proton + Steam&lt;/strong&gt;, game compatibility is basically perfect for my needs.&lt;br&gt;
So… &lt;strong&gt;goodbye Windows&lt;/strong&gt; between bloatware and Copilot, I don’t miss it at all.&lt;/p&gt;</description></item><item><title>Half-Life 2, Havok, and the Quiet Journey of Building Lilly.Engine</title><link>https://orivega.io/half-life-2-havok-and-the-quiet-journey-of-building-lillyengine/</link><pubDate>Sat, 06 Dec 2025 20:20:00 +0000</pubDate><guid>https://orivega.io/half-life-2-havok-and-the-quiet-journey-of-building-lillyengine/</guid><description>&lt;p&gt;&lt;img alt="Half-Life2" loading="lazy" src="https://www.cdkeyit.it/wp-content/uploads/ravenholm-half-life-2-rtx.webp"&gt;&lt;/p&gt;
&lt;p&gt;In the late evenings, when everything finally slows down, I find myself replaying &lt;strong&gt;Half-Life 2&lt;/strong&gt; on my Linux workstation - the one powered by an RTX 5080.&lt;br&gt;
It’s a ridiculous mismatch, I know. With a GPU like that I should be stress‑testing cutting‑edge engines, ray tracing showcases, tech demos that melt silicon.&lt;br&gt;
And yet, instead, I’m back in City 17.&lt;br&gt;
Back with Gordon Freeman.&lt;br&gt;
Back with wooden crates, metal shelves, and that strangely comforting “thunk” when physics does exactly what your brain expects.&lt;/p&gt;</description></item><item><title>16 days of Linux: Intel integrated camera</title><link>https://orivega.io/16-days-of-linux-intel-integrated-camera/</link><pubDate>Fri, 05 Dec 2025 15:22:00 +0000</pubDate><guid>https://orivega.io/16-days-of-linux-intel-integrated-camera/</guid><description>&lt;p&gt;Good news for my Dell XPS 13 (9350): &lt;a href="https://www.phoronix.com/news/Linux-6.18-Released"&gt;kernel version 6.18&lt;/a&gt; officially supports integrated Intel cameras!
In fact, they have modified the setup in the Arch Linux wiki.&lt;img alt="2025-12-05_16-18" loading="lazy" src="https://orivega.io/images/2025-12-05_16-18.webp"&gt;&lt;/p&gt;</description></item><item><title>10 of 100 Days of Linux</title><link>https://orivega.io/10-of-100-days-of-linux/</link><pubDate>Mon, 01 Dec 2025 14:42:00 +0000</pubDate><guid>https://orivega.io/10-of-100-days-of-linux/</guid><description>&lt;p&gt;I had a problem that didn&amp;rsquo;t occur with Windows and OSX. When I was on a call and didn&amp;rsquo;t move the mouse for 10 minutes, the screen would freeze. I discovered that you need to make a change to Hyperland idle:&lt;/p&gt;
&lt;div class="code-block"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Lock screen timeout (300s) and DPMS off (600s)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;general {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; lock_cmd = $HOME/dotfiles/bin/bin/slock.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; before_sleep_cmd = $HOME/dotfiles/bin/bin/slock.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; after_sleep_cmd = hyprctl dispatch dpms on
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; # Respect idle-inhibit requests from applications (default: false)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; # Browsers (Firefox, Chrome, Brave) automatically prevent idle during audio/video playback
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ignore_dbus_inhibit = false # Respect DBus requests from applications
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ignore_systemd_inhibit = false # Respect systemd-inhibit --what=idle
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;In return, I installed it on my home PC (as well as on the Dell XPS 13) and imported all my games onto Steam.&lt;/p&gt;</description></item><item><title>3 of 100 of Arch linux</title><link>https://orivega.io/3-of-100-of-arch-linux/</link><pubDate>Wed, 26 Nov 2025 13:19:00 +0000</pubDate><guid>https://orivega.io/3-of-100-of-arch-linux/</guid><description>&lt;p&gt;Third day of Linux (Arch), I still have the camera problem (&lt;a href="https://wiki.archlinux.org/title/Dell_XPS_13_(9350)_2024"&gt;https://wiki.archlinux.org/title/Dell_XPS_13_(9350)_2024&lt;/a&gt;). I have another bug, where if my computer goes to sleep, 1 time out of 10 I have to restart sddm!&lt;/p&gt;</description></item><item><title>2 day of Linux</title><link>https://orivega.io/2-day-of-linux/</link><pubDate>Tue, 25 Nov 2025 09:38:00 +0000</pubDate><guid>https://orivega.io/2-day-of-linux/</guid><description>&lt;p&gt;Second day of Arch Linux XPS 13 (2024).
I can&amp;rsquo;t get the camera to work even though I followed the Arch wiki. There&amp;rsquo;s no way to make it work, but I&amp;rsquo;m not giving up.&lt;/p&gt;</description></item><item><title>100 of Linux  - First Day</title><link>https://orivega.io/100-of-linux-first-day/</link><pubDate>Mon, 24 Nov 2025 08:48:00 +0000</pubDate><guid>https://orivega.io/100-of-linux-first-day/</guid><description>&lt;p&gt;I’ve always been a hardcore Linux user. I remember when I was little, I went out to buy a Linux distribution that existed back then — it was called Caldera Linux. It doesn’t exist anymore, of course. If I’m not mistaken, it was somehow related to SUSE… I’m not totally sure, I’d need to double-check. I remember my dad taking me to the local computer store, Essedi Shop (but that’s a story for another post).&lt;/p&gt;</description></item></channel></rss>