<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Rio Gesulgon</title><description>Rio Gesulgon is a senior fullstack engineer and ML practitioner in Kuala Lumpur. Writing about Astro, backend performance, Linux, machine learning, and practical engineering.</description><link>https://rioges.xyz/</link><item><title>The Anatomy of an MLOps Risk Platform: Architecture and Flow</title><link>https://rioges.xyz/projects/mlops-risk-platform-architecture/</link><guid isPermaLink="true">https://rioges.xyz/projects/mlops-risk-platform-architecture/</guid><description>A guided tour through the architecture of my transaction-risk scoring platform: how a request flows from HTTP to calibrated score, how the training pipeline produces trustworthy artifacts, and where each classic MLOps practice lives in the design. With diagrams.</description><pubDate>Tue, 01 Sep 2026 16:00:00 GMT</pubDate><category>mlops</category><category>machine-learning</category><category>architecture</category><category>python</category><category>fastapi</category><category>docker</category></item><item><title>What Broke Building an MLOps Platform — and What Each Failure Taught</title><link>https://rioges.xyz/projects/mlops-risk-platform-lessons/</link><guid isPermaLink="true">https://rioges.xyz/projects/mlops-risk-platform-lessons/</guid><description>I shipped a full MLOps risk-scoring platform: real 1M-row dataset, calibrated model, versioned API, CI that trains and smoke-tests, and Docker images on GHCR. This is the honest log of five things that broke along the way and the lessons each one left behind.</description><pubDate>Mon, 31 Aug 2026 16:00:00 GMT</pubDate><category>mlops</category><category>machine-learning</category><category>python</category><category>fastapi</category><category>docker</category><category>ci-cd</category></item><item><title>MLOps Risk Platform</title><link>https://rioges.xyz/projects/mlops-risk-platform/</link><guid isPermaLink="true">https://rioges.xyz/projects/mlops-risk-platform/</guid><description>Transaction-risk scoring platform trained on 1M Kaggle transactions: calibrated model serving over a versioned API, cost-based threshold selection, drift reporting, and a CI/CD pipeline that publishes a security-scanned Docker image.</description><pubDate>Mon, 31 Aug 2026 16:00:00 GMT</pubDate><category>mlops</category><category>python</category><category>fastapi</category><category>machine-learning</category><category>docker</category><category>ci-cd</category></item><item><title>Building 10 Developer Tools With Zero Frameworks — And Why</title><link>https://rioges.xyz/projects/building-dev-tools-riogesxyz/</link><guid isPermaLink="true">https://rioges.xyz/projects/building-dev-tools-riogesxyz/</guid><description>How I built 10 privacy-first developer tools (JSON formatter, regex tester, JWT decoder, etc.) for rioges.xyz using vanilla JS inside Astro, and what I learned about SEO, performance, and the case for doing less.</description><pubDate>Sun, 02 Aug 2026 16:00:00 GMT</pubDate><category>javascript</category><category>astro</category><category>seo</category><category>web-development</category><category>tools</category></item><item><title>Setting Up SonicMaster on a 6GB GPU: Pitfalls, Tricks, and Hard-Won Lessons</title><link>https://rioges.xyz/projects/sonicmaster-6gb-gpu-setup/</link><guid isPermaLink="true">https://rioges.xyz/projects/sonicmaster-6gb-gpu-setup/</guid><description>How I got AMAAI Lab&apos;s SonicMaster music restoration model running on an RTX 2060 6GB — Python version mismatches, gated VAE downloads, custom low-VRAM inference scripts, and every pitfall I hit along the way.</description><pubDate>Sun, 02 Aug 2026 16:00:00 GMT</pubDate><category>sonicmaster</category><category>gpu</category><category>pytorch</category><category>audio</category><category>machine-learning</category><category>low-vram</category></item><item><title>Dev Tools</title><link>https://rioges.xyz/projects/dev-tools/</link><guid isPermaLink="true">https://rioges.xyz/projects/dev-tools/</guid><description>10 free developer tools that run 100% client-side — JSON formatter, Base64 encoder, regex tester, JWT decoder, and more. Built with zero frameworks for maximum speed.</description><pubDate>Sun, 02 Aug 2026 16:00:00 GMT</pubDate><category>javascript</category><category>tools</category><category>seo</category><category>web-development</category></item><item><title>TF Object Detection AutoPipeline</title><link>https://rioges.xyz/projects/tf-od-autopipeline/</link><guid isPermaLink="true">https://rioges.xyz/projects/tf-od-autopipeline/</guid><description>End-to-end pipeline for training TensorFlow Object Detection models with web-based annotation, LLM-powered hyperparameter optimization, and autonomous retraining — now with Ollama support for local models.</description><pubDate>Sat, 01 Aug 2026 16:00:00 GMT</pubDate><category>python</category><category>tensorflow</category><category>object-detection</category><category>LLM</category><category>ollama</category><category>ML</category><category>open-source</category><category>computer-vision</category></item><item><title>AgentPad</title><link>https://rioges.xyz/projects/agentpad/</link><guid isPermaLink="true">https://rioges.xyz/projects/agentpad/</guid><description>Visual agentic workflow builder — design, run, and debug LLM-powered agent pipelines with a drag-and-drop canvas.</description><pubDate>Fri, 31 Jul 2026 16:00:00 GMT</pubDate><category>python</category><category>fastAPI</category><category>react</category><category>solidJs</category><category>LLM</category><category>agentic</category><category>open-source</category></item><item><title>Using Hooks in Your Coding Agent to Monitor Token Usage</title><link>https://rioges.xyz/projects/using-hooks-to-monitor-token-usage/</link><guid isPermaLink="true">https://rioges.xyz/projects/using-hooks-to-monitor-token-usage/</guid><description>Compare how OpenClaw, Pi, OpenCode, and GitHub Copilot CLI expose hook systems for real-time token monitoring, budget alerts, and cost attribution — with working code for each.</description><pubDate>Fri, 31 Jul 2026 00:00:00 GMT</pubDate><category>agents</category><category>hooks</category><category>monitoring</category><category>tokens</category><category>openclaw</category><category>pi</category><category>opencode</category><category>claude-code</category><category>copilot</category></item><item><title>Hubble.md + Obsidian: Two Apps, One Vault, Zero Conflicts</title><link>https://rioges.xyz/projects/hubble-obsidian-two-apps-one-vault/</link><guid isPermaLink="true">https://rioges.xyz/projects/hubble-obsidian-two-apps-one-vault/</guid><description>Hubble.md and Obsidian both read and write the same markdown files. Point them at the same vault and you get live agent collaboration and interactive HTML views without leaving Obsidian behind. Here&apos;s how the integration works with Hermes on a Pi.</description><pubDate>Tue, 28 Jul 2026 16:00:00 GMT</pubDate><category>obsidian</category><category>hubble</category><category>hermes</category><category>agent</category><category>local-first</category><category>markdown</category></item><item><title>Upgrading from Astro 4 to 7: What Actually Broke (and What Didn&apos;t)</title><link>https://rioges.xyz/projects/upgrading-astro-7/</link><guid isPermaLink="true">https://rioges.xyz/projects/upgrading-astro-7/</guid><description>I went from Astro 4.4 to 7.1 in one jump. Here&apos;s what broke, what the migration guide doesn&apos;t tell you, and why Sätteri alone makes it worth it.</description><pubDate>Tue, 28 Jul 2026 16:00:00 GMT</pubDate><category>astro</category><category>webdev</category><category>static-sites</category></item><item><title>Building a durable generation queue for Wan2GP on RunPod</title><link>https://rioges.xyz/projects/wan2gp-durable-queue-runpod/</link><guid isPermaLink="true">https://rioges.xyz/projects/wan2gp-durable-queue-runpod/</guid><description>How I forked Wan2GP, added a durable generation queue that survives pod stops and client disconnects, hardened two RunPod deployment paths (a pre-built Docker image and a clone-and-run template), and published them as public templates — including all the build gotchas along the way.</description><pubDate>Sat, 25 Jul 2026 16:00:00 GMT</pubDate><category>runpod</category><category>docker</category><category>wan2gp</category><category>gpu</category><category>open-source</category></item><item><title>Wan2GP Durable Queue</title><link>https://rioges.xyz/projects/wan2gp-durable-queue/</link><guid isPermaLink="true">https://rioges.xyz/projects/wan2gp-durable-queue/</guid><description>A fork of Wan2GP that adds a durable generation queue — survives RunPod pod stops, browser refreshes, and client disconnects — shipped as two hardened RunPod deployment templates.</description><pubDate>Sat, 25 Jul 2026 16:00:00 GMT</pubDate><category>runpod</category><category>docker</category><category>wan2gp</category><category>gpu</category><category>open-source</category></item><item><title>I wrote my first Yazi plugin: date-diff.yazi</title><link>https://rioges.xyz/projects/date-diff-yazi/</link><guid isPermaLink="true">https://rioges.xyz/projects/date-diff-yazi/</guid><description>A tiny Yazi plugin that shows the modification-time difference between two selected files. My first step into the Yazi Lua plugin API.</description><pubDate>Sat, 18 Jul 2026 16:00:00 GMT</pubDate><category>yazi</category><category>lua</category><category>plugin</category><category>file-manager</category><category>terminal</category></item><item><title>Understanding the Pi Coding Agent: Its Components and How They Fit Together</title><link>https://rioges.xyz/projects/pi-agent-components/</link><guid isPermaLink="true">https://rioges.xyz/projects/pi-agent-components/</guid><description>A breakdown of the Pi coding agent&apos;s architecture, with GitHub Copilot as the work provider and a custom Ollama Cloud provider extension for personal use.</description><pubDate>Fri, 17 Jul 2026 16:00:00 GMT</pubDate><category>pi</category><category>agent</category><category>llm</category><category>typescript</category><category>ollama</category><category>github-copilot</category></item><item><title>Pi Extensions I Actually Use</title><link>https://rioges.xyz/projects/pi-extensions-i-use/</link><guid isPermaLink="true">https://rioges.xyz/projects/pi-extensions-i-use/</guid><description>A tour of the Pi extensions I run every day: custom Ollama Cloud provider registration, durable memory, output compaction, subagent workflows, and a few extras I keep installed.</description><pubDate>Fri, 17 Jul 2026 16:00:00 GMT</pubDate><category>pi</category><category>agent</category><category>extensions</category><category>ollama</category><category>github-copilot</category></item><item><title>pi-ollama-cloud-models</title><link>https://rioges.xyz/projects/pi-ollama-cloud-models/</link><guid isPermaLink="true">https://rioges.xyz/projects/pi-ollama-cloud-models/</guid><description>A pi extension that auto-registers Ollama Cloud models so they appear in /model without manually editing config.</description><pubDate>Fri, 17 Jul 2026 16:00:00 GMT</pubDate><category>TypeScript</category><category>Ollama</category><category>pi</category><category>LLM</category></item><item><title>How to customize the Omarchy boot logo</title><link>https://rioges.xyz/projects/omarchy-customize-boot-logo/</link><guid isPermaLink="true">https://rioges.xyz/projects/omarchy-customize-boot-logo/</guid><description>Change the Omarchy boot/unlock logo using the built-in omarchy plymouth command, or go manual with Plymouth and Limine.</description><pubDate>Thu, 25 Jun 2026 16:00:00 GMT</pubDate><category>omarchy</category><category>plymouth</category><category>linux</category><category>ricing</category></item><item><title>Cat Gallery</title><link>https://rioges.xyz/projects/cat-gallery/</link><guid isPermaLink="true">https://rioges.xyz/projects/cat-gallery/</guid><description>Displays random images of cats</description><pubDate>Mon, 22 Jun 2026 16:00:00 GMT</pubDate><category>javascript</category><category>animejs</category><category>funny</category></item><item><title>Configure wezterm terminal to open the scrollback buffer in your text editor</title><link>https://rioges.xyz/projects/wezterm-scrollback-nvim/</link><guid isPermaLink="true">https://rioges.xyz/projects/wezterm-scrollback-nvim/</guid><description>We figure out how to open the wezterm scrollback buffer into a text editor</description><pubDate>Thu, 18 Jun 2026 16:00:00 GMT</pubDate><category>shell</category><category>wezterm</category></item><item><title>Chrome CryptoPad</title><link>https://rioges.xyz/projects/chrome-cryptopad/</link><guid isPermaLink="true">https://rioges.xyz/projects/chrome-cryptopad/</guid><description>Chrome extension to encrypt and decrypt text</description><pubDate>Thu, 18 Jun 2026 16:00:00 GMT</pubDate><category>TypeScript</category><category>chrome extension</category><category>encryption</category></item><item><title>Chrome TabFlash</title><link>https://rioges.xyz/projects/chrome-tabflash/</link><guid isPermaLink="true">https://rioges.xyz/projects/chrome-tabflash/</guid><description>Chrome extension to navigate tabs using the keyboard</description><pubDate>Thu, 18 Jun 2026 16:00:00 GMT</pubDate><category>javascript</category><category>chrome extension</category></item><item><title>Obsidian CryptoPad</title><link>https://rioges.xyz/projects/obsidian-cryptopad/</link><guid isPermaLink="true">https://rioges.xyz/projects/obsidian-cryptopad/</guid><description>Obsidian Plugin to encrypt and decrypt text</description><pubDate>Thu, 18 Jun 2026 16:00:00 GMT</pubDate><category>TypeScript</category><category>Obsidian</category><category>encryption</category></item><item><title>Traffic monitor</title><link>https://rioges.xyz/projects/traffic-monitor/</link><guid isPermaLink="true">https://rioges.xyz/projects/traffic-monitor/</guid><description>Monitor traffic conditions on designated roads/segments</description><pubDate>Thu, 18 Jun 2026 16:00:00 GMT</pubDate><category>python</category><category>Django 4.2</category><category>pandas</category><category>mathplotlib</category><category>Chart.js</category><category>Boootstrap</category><category>Google Routes API</category></item><item><title>The Two Crystal Balls Problem: Why Sometimes Being Smart Means Taking Baby Steps 🔮✨ </title><link>https://rioges.xyz/projects/algorithms-crystal-balls/</link><guid isPermaLink="true">https://rioges.xyz/projects/algorithms-crystal-balls/</guid><description>The two crystal balls problem teaches us that when you have limited resources, taking strategic square-root-sized steps often beats the obvious approach – a lesson that applies everywhere from software testing to everyday decision-making. 🔮💡</description><pubDate>Fri, 08 Aug 2025 16:00:00 GMT</pubDate><category>algorithms</category></item><item><title>How to add image to Astro collection</title><link>https://rioges.xyz/projects/astro-add-image-to-collection/</link><guid isPermaLink="true">https://rioges.xyz/projects/astro-add-image-to-collection/</guid><description>How to add and manage image fields in an Astro content collection schema.</description><pubDate>Tue, 15 Apr 2025 16:00:00 GMT</pubDate><category>astro</category></item><item><title>Astro Content Collections</title><link>https://rioges.xyz/projects/astro-content-collections/</link><guid isPermaLink="true">https://rioges.xyz/projects/astro-content-collections/</guid><description>Astro’s content collections provide a structured, type-safe way to organize, validate, and query Markdown content using schemas and the `config.ts` file.</description><pubDate>Tue, 15 Apr 2025 16:00:00 GMT</pubDate><category>astro</category></item><item><title>💯How I Achieved 100/100 on Google Lighthouse</title><link>https://rioges.xyz/projects/astro-google-lighthouse/</link><guid isPermaLink="true">https://rioges.xyz/projects/astro-google-lighthouse/</guid><description>Learn how to use Google Lighthouse to optimize your website</description><pubDate>Tue, 15 Apr 2025 16:00:00 GMT</pubDate><category>nginx</category><category>astro</category></item><item><title>Enable image optimization in Astro</title><link>https://rioges.xyz/projects/astro-optimize-images/</link><guid isPermaLink="true">https://rioges.xyz/projects/astro-optimize-images/</guid><description>A quick guide to setting up Astro, exploring project structure, and using layouts—plus handy resources to boost your workflow.</description><pubDate>Tue, 15 Apr 2025 16:00:00 GMT</pubDate><category>astro</category></item><item><title>Configuring SSL for nginx</title><link>https://rioges.xyz/projects/configuring-ssl-for-nginx/</link><guid isPermaLink="true">https://rioges.xyz/projects/configuring-ssl-for-nginx/</guid><description>This blog post guides users through securing their websites with free SSL certificates from Let&apos;s Encrypt and configuring Nginx for HTTPS</description><pubDate>Sun, 13 Apr 2025 16:00:00 GMT</pubDate><category>nginx</category></item><item><title>Quick and Useful awk Commands for Filtering Nginx Access Logs</title><link>https://rioges.xyz/projects/using-awk-to-filter-nginx-access-logs/</link><guid isPermaLink="true">https://rioges.xyz/projects/using-awk-to-filter-nginx-access-logs/</guid><description>Learn how to use simple `awk` one-liners to analyze your Nginx access logs, identify frequent visitors, sort by date, and get IP info—all from the command line.</description><pubDate>Fri, 11 Apr 2025 16:00:00 GMT</pubDate><category>awk</category><category>nginx</category></item><item><title>🚀 Building with Astro: A Developer&apos;s Quickstart Guide</title><link>https://rioges.xyz/projects/migrating-website-to-astro/</link><guid isPermaLink="true">https://rioges.xyz/projects/migrating-website-to-astro/</guid><description>A quick guide to setting up Astro, exploring project structure, and using layouts—plus handy resources to boost your workflow.</description><pubDate>Thu, 10 Apr 2025 16:00:00 GMT</pubDate><category>astro</category></item><item><title>rioges.xyz</title><link>https://rioges.xyz/projects/riogesxyz/</link><guid isPermaLink="true">https://rioges.xyz/projects/riogesxyz/</guid><description>My personal site — built with Astro, deployed on a VPS, and tuned for performance and SEO.</description><pubDate>Thu, 10 Apr 2025 16:00:00 GMT</pubDate><category>astro</category><category>javascript</category><category>typescript</category><category>tailwind</category><category>solidJs</category></item></channel></rss>