<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Systems Programming on AI VOID</title><link>https://ai-blog.noorshomelab.dev/categories/systems-programming/</link><description>Recent content in Systems Programming on AI VOID</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sun, 24 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://ai-blog.noorshomelab.dev/categories/systems-programming/index.xml" rel="self" type="application/rss+xml"/><item><title>Setting Up Your Emulator Development Environment</title><link>https://ai-blog.noorshomelab.dev/game-boy-emulator-fsharp/setup-emulator-dev-environment/</link><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/game-boy-emulator-fsharp/setup-emulator-dev-environment/</guid><description>&lt;p&gt;Building a Game Boy emulator from scratch is a deeply rewarding project that takes you into the heart of computer architecture and low-level system design. This journey begins by establishing a robust and efficient development environment. In this chapter, we&amp;rsquo;ll set up everything you need: the F# language, the .NET SDK, and a powerful cross-platform graphics library to bring your emulator to life.&lt;/p&gt;
&lt;p&gt;By the end of this chapter, you&amp;rsquo;ll have a fully configured F# project, ready to accept the intricate logic of Game Boy hardware. You&amp;rsquo;ll also confirm that your graphics setup is functional, providing the visual canvas for the pixels your Picture Processing Unit (PPU) will eventually render. This foundational step is critical; a well-prepared environment ensures you can focus on the complex emulation logic without fighting your tools.&lt;/p&gt;</description></item><item><title>Chapter 1: Setting Up Your Rust Development Environment (Rust 1.94.0)</title><link>https://ai-blog.noorshomelab.dev/rust-mastery-2026/rust-dev-environment-setup/</link><pubDate>Fri, 20 Mar 2026 00:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/rust-mastery-2026/rust-dev-environment-setup/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Welcome, future Rustacean! You&amp;rsquo;re about to embark on an exciting journey into the world of Rust, a language celebrated for its unparalleled performance, robust memory safety, and delightful developer experience. Whether you&amp;rsquo;re a seasoned developer looking for a new challenge or just starting your coding adventure, Rust offers a powerful toolkit for building reliable and efficient software.&lt;/p&gt;
&lt;p&gt;In this first chapter, our mission is simple: get you up and running with a fully functional Rust development environment. We&amp;rsquo;ll cover the essential tools you&amp;rsquo;ll need, guide you through the installation process for Rust 1.94.0, and help you create and run your very first Rust program. By the end of this chapter, you&amp;rsquo;ll have a solid foundation to explore Rust&amp;rsquo;s unique features, including its groundbreaking memory safety model that we&amp;rsquo;ll start to touch upon. Get ready to write some blazing-fast, secure code!&lt;/p&gt;</description></item><item><title>C Programming Guide</title><link>https://ai-blog.noorshomelab.dev/c-programming-guide/</link><pubDate>Mon, 03 Nov 2025 01:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/c-programming-guide/</guid><description/></item><item><title>Chapter 3: Variables, Data Types, and Control Flow in Rust</title><link>https://ai-blog.noorshomelab.dev/rust-mastery-2026/variables-datatypes-control-flow/</link><pubDate>Fri, 20 Mar 2026 00:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/rust-mastery-2026/variables-datatypes-control-flow/</guid><description>&lt;h2 id="introduction-the-building-blocks-of-any-program"&gt;Introduction: The Building Blocks of Any Program&lt;/h2&gt;
&lt;p&gt;Welcome back, fellow Rustaceans! In the previous chapters, we established our Rust development environment using &lt;code&gt;rustup&lt;/code&gt;, explored the &lt;code&gt;cargo&lt;/code&gt; build system, and crafted our inaugural &amp;ldquo;Hello, world!&amp;rdquo; program. Now, it&amp;rsquo;s time to delve deeper into the fundamental concepts that form the backbone of any software application: &lt;strong&gt;variables&lt;/strong&gt;, &lt;strong&gt;data types&lt;/strong&gt;, &lt;strong&gt;functions&lt;/strong&gt;, and &lt;strong&gt;control flow&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Think of variables as named containers that hold pieces of information, while data types define the specific kind of information those containers can store – be it whole numbers, text, or true/false values. Functions are reusable blocks of code that perform specific tasks, allowing you to organize your logic. Finally, control flow dictates the order in which your program executes different code segments, enabling it to make decisions and repeat actions. Mastering these concepts is paramount, as they are the foundational elements upon which all complex and robust applications are constructed.&lt;/p&gt;</description></item><item><title>Chapter 3: The Basic Ratatui Loop: Drawing Your First Frame</title><link>https://ai-blog.noorshomelab.dev/ratatui-mastery-guide-2026/03-basic-ratatui-loop/</link><pubDate>Tue, 17 Mar 2026 00:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/ratatui-mastery-guide-2026/03-basic-ratatui-loop/</guid><description>&lt;p&gt;Welcome to Chapter 3! In the previous chapter, we laid the groundwork for our Rust Terminal User Interface (TUI) application. We set up our project, added &lt;code&gt;ratatui&lt;/code&gt; and &lt;code&gt;crossterm&lt;/code&gt; as dependencies, and learned how to prepare the terminal for TUI interaction by entering raw mode and switching to the alternate screen. These steps are crucial for taking full control of the terminal, but they don&amp;rsquo;t actually &lt;em&gt;show&lt;/em&gt; anything yet.&lt;/p&gt;
&lt;p&gt;This chapter is where we start bringing our TUI to life! We&amp;rsquo;ll dive into the heart of any TUI application: the main drawing loop. You&amp;rsquo;ll learn how Ratatui manages the screen, introduces the concept of &amp;ldquo;frames&amp;rdquo; and &amp;ldquo;widgets,&amp;rdquo; and guides you through rendering your very first piece of text onto the terminal. By the end of this chapter, you&amp;rsquo;ll have a basic, but functioning, Ratatui application displaying a friendly greeting.&lt;/p&gt;</description></item><item><title>Loading ROMs and Initial Boot Sequence</title><link>https://ai-blog.noorshomelab.dev/game-boy-emulator-fsharp/loading-roms-boot-sequence/</link><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/game-boy-emulator-fsharp/loading-roms-boot-sequence/</guid><description>&lt;p&gt;In this chapter, we transition from a theoretical CPU to a system capable of loading and preparing a Game Boy game for execution. This is the pivotal moment where your emulator begins to take on a tangible form, moving from abstract concepts to processing actual game data. We&amp;rsquo;ll implement the crucial functionality of loading a Game Boy ROM file into our Memory Management Unit (MMU) and setting up the initial state of the CPU, mirroring what happens after the Game Boy&amp;rsquo;s internal boot ROM completes.&lt;/p&gt;</description></item><item><title>CPU Control Flow: Jumps, Calls, and Conditional Logic</title><link>https://ai-blog.noorshomelab.dev/game-boy-emulator-fsharp/cpu-control-flow-jumps-calls/</link><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/game-boy-emulator-fsharp/cpu-control-flow-jumps-calls/</guid><description>&lt;p&gt;In this chapter, we&amp;rsquo;re going to give our Game Boy CPU the ability to make decisions and reuse code. We&amp;rsquo;ll implement the crucial control flow instructions: &lt;code&gt;JP&lt;/code&gt; (Jump), &lt;code&gt;JR&lt;/code&gt; (Jump Relative), &lt;code&gt;CALL&lt;/code&gt;, and &lt;code&gt;RET&lt;/code&gt; (Return), along with their conditional variants. These instructions are fundamental to how programs execute, allowing them to branch, loop, and call subroutines.&lt;/p&gt;
&lt;p&gt;By the end of this milestone, your emulator will be able to follow more complex program paths, enabling it to execute actual Game Boy program logic beyond simple linear instruction sequences. This is a significant step towards running real Game Boy ROMs, as it unlocks the ability for programs to react to different states and organize their code efficiently.&lt;/p&gt;</description></item><item><title>Interrupts and the Main CPU Execution Loop</title><link>https://ai-blog.noorshomelab.dev/game-boy-emulator-fsharp/interrupts-cpu-execution-loop/</link><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/game-boy-emulator-fsharp/interrupts-cpu-execution-loop/</guid><description>&lt;h3 id="introduction"&gt;Introduction&lt;/h3&gt;
&lt;p&gt;In the previous chapters, we laid the groundwork for our Game Boy emulator by implementing the CPU&amp;rsquo;s core instruction set and a basic Memory Management Unit. However, a real system isn&amp;rsquo;t just a CPU executing instructions sequentially. Hardware components like the display, timer, and input devices need to signal the CPU when an event occurs, and the CPU needs a way to respond. This is where &lt;strong&gt;interrupts&lt;/strong&gt; come in.&lt;/p&gt;</description></item><item><title>Chapter 7: Traits: Defining Shared Behavior and Polymorphism</title><link>https://ai-blog.noorshomelab.dev/rust-mastery-2026/traits-shared-behavior/</link><pubDate>Fri, 20 Mar 2026 00:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/rust-mastery-2026/traits-shared-behavior/</guid><description>&lt;h2 id="chapter-7-traits-defining-shared-behavior-and-polymorphism"&gt;Chapter 7: Traits: Defining Shared Behavior and Polymorphism&lt;/h2&gt;
&lt;p&gt;Welcome back, Rustacean! In our journey so far, we&amp;rsquo;ve learned how to define custom data structures using &lt;code&gt;struct&lt;/code&gt;s and &lt;code&gt;enum&lt;/code&gt;s. These are fantastic for organizing data, but what about behavior? How do we define a set of actions that different types can share, or ensure that a function can operate on &lt;em&gt;any&lt;/em&gt; type that possesses a certain capability?&lt;/p&gt;
&lt;p&gt;This is where &lt;strong&gt;traits&lt;/strong&gt; come into play! Think of traits as Rust&amp;rsquo;s powerful way to define shared behavior. They are similar to interfaces in other languages (like Java or Go) or typeclasses in Haskell. Traits allow you to tell the Rust compiler: &amp;ldquo;Any type that implements &lt;em&gt;this&lt;/em&gt; trait promises to have &lt;em&gt;these&lt;/em&gt; methods.&amp;rdquo; This chapter will demystify traits, showing you how they enable polymorphism, promote code reuse, and are fundamental to writing idiomatic and extensible Rust applications.&lt;/p&gt;</description></item><item><title>Input Handling: Connecting Keyboard to Game Boy Buttons</title><link>https://ai-blog.noorshomelab.dev/game-boy-emulator-fsharp/input-handling-keyboard-buttons/</link><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/game-boy-emulator-fsharp/input-handling-keyboard-buttons/</guid><description>&lt;p&gt;Handling user input is crucial for any interactive application, especially an emulator. In this chapter, we&amp;rsquo;ll bridge the gap between your physical keyboard and the Game Boy&amp;rsquo;s virtual buttons. You&amp;rsquo;ll learn how to capture keyboard events, map them to the Game Boy&amp;rsquo;s specific input registers, and integrate this into your emulator&amp;rsquo;s main loop. By the end, your emulator will respond to your key presses, allowing you to control Game Boy games.&lt;/p&gt;</description></item><item><title>Chapter 10: Concurrency and Asynchronous Programming in Modern Rust</title><link>https://ai-blog.noorshomelab.dev/rust-mastery-2026/concurrency-async-rust/</link><pubDate>Fri, 20 Mar 2026 00:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/rust-mastery-2026/concurrency-async-rust/</guid><description>&lt;h2 id="chapter-10-concurrency-and-asynchronous-programming-in-modern-rust"&gt;Chapter 10: Concurrency and Asynchronous Programming in Modern Rust&lt;/h2&gt;
&lt;p&gt;Welcome to Chapter 10! You&amp;rsquo;ve come a long way, mastering Rust&amp;rsquo;s unique ownership system, robust error handling, and powerful type system. Now, it&amp;rsquo;s time to elevate your Rust skills to build truly high-performance, responsive applications: by diving into the world of concurrency and asynchronous programming.&lt;/p&gt;
&lt;p&gt;In modern software development, applications often need to do many things at once – handle multiple user requests, process data in the background, or communicate with various network services without freezing up. This is where concurrency and asynchronicity shine. Rust provides powerful, safe tools to tackle these challenges, offering performance comparable to C++ while maintaining its legendary memory safety guarantees. This chapter will guide you through Rust&amp;rsquo;s approaches to managing multiple operations simultaneously, ensuring your applications are fast, efficient, and robust.&lt;/p&gt;</description></item><item><title>Chapter 11: Building a Production-Ready CLI Application with Rust</title><link>https://ai-blog.noorshomelab.dev/rust-mastery-2026/building-production-cli/</link><pubDate>Fri, 20 Mar 2026 00:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/rust-mastery-2026/building-production-cli/</guid><description>&lt;h2 id="chapter-11-building-a-production-ready-cli-application-with-rust"&gt;Chapter 11: Building a Production-Ready CLI Application with Rust&lt;/h2&gt;
&lt;p&gt;Welcome back, Rustacean! In our journey through Rust, we&amp;rsquo;ve explored its powerful memory safety, robust type system, and efficient concurrency. Now, it&amp;rsquo;s time to apply these concepts to build something incredibly practical and widely used: a production-ready Command-Line Interface (CLI) application.&lt;/p&gt;
&lt;p&gt;CLI tools are the workhorses of development, automation, and system administration. From &lt;code&gt;git&lt;/code&gt; to &lt;code&gt;ls&lt;/code&gt;, &lt;code&gt;grep&lt;/code&gt; to &lt;code&gt;docker&lt;/code&gt;, CLIs are everywhere. Rust, with its focus on performance, reliability, and small binaries, is an exceptional choice for crafting CLIs that are fast, dependable, and easy to distribute. This chapter will guide you through building a simple yet robust CLI tool that searches for a pattern within text files. We&amp;rsquo;ll cover essential aspects like parsing command-line arguments, handling file input/output, and implementing structured error management.&lt;/p&gt;</description></item><item><title>Chapter 12: Advanced Rust Patterns, FFI, and Ecosystem Exploration</title><link>https://ai-blog.noorshomelab.dev/rust-mastery-2026/advanced-patterns-ffi-ecosystem/</link><pubDate>Fri, 20 Mar 2026 00:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/rust-mastery-2026/advanced-patterns-ffi-ecosystem/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Welcome to the final chapter of our Rust journey! You&amp;rsquo;ve come a long way, mastering the fundamentals, understanding Rust&amp;rsquo;s unique ownership system, tackling concurrency, and building robust, error-proof applications. Throughout this guide, we&amp;rsquo;ve emphasized Rust&amp;rsquo;s safety guarantees, which help prevent entire classes of bugs at compile time. But what happens when you need to step outside these guarantees for specific, highly optimized tasks or to interact with code written in other languages?&lt;/p&gt;</description></item><item><title>Chapter 15: Advanced Topics: Linking C with Assembly Language</title><link>https://ai-blog.noorshomelab.dev/c-programming-guide/linking-c-with-assembly/</link><pubDate>Mon, 03 Nov 2025 01:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/c-programming-guide/linking-c-with-assembly/</guid><description>&lt;h1 id="chapter-15-advanced-topics-linking-c-with-assembly-language"&gt;Chapter 15: Advanced Topics: Linking C with Assembly Language&lt;/h1&gt;
&lt;p&gt;At the heart of low-level programming lies the ability to interact directly with the hardware and exploit the full potential of the CPU. While C provides excellent control, there are times when even C isn&amp;rsquo;t &amp;ldquo;low-level enough.&amp;rdquo; This is where &lt;strong&gt;Assembly Language&lt;/strong&gt; comes in.&lt;/p&gt;
&lt;p&gt;Assembly language is a human-readable representation of the machine code instructions that a processor executes. Linking C with Assembly allows you to:&lt;/p&gt;</description></item><item><title>Building High-Performance UIs with GPUI: A Guide for Rust Developers</title><link>https://ai-blog.noorshomelab.dev/guides/gpui-guide-2026/</link><pubDate>Sun, 24 May 2026 00:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/guides/gpui-guide-2026/</guid><description>&lt;p&gt;Welcome to a focused learning guide on GPUI, the GPU-accelerated UI framework that powers the Zed editor. If you&amp;rsquo;re a Rust developer eager to build high-performance, native user interfaces on macOS and Linux, this guide is designed for you. GPUI offers a distinct hybrid rendering model and leverages Rust&amp;rsquo;s strengths to deliver robust and responsive applications.&lt;/p&gt;
&lt;h3 id="understanding-gpuis-role-in-modern-ui-development"&gt;Understanding GPUI&amp;rsquo;s Role in Modern UI Development&lt;/h3&gt;
&lt;p&gt;Modern software users expect applications that are not only functional but also performant and fluid. Traditional UI frameworks can sometimes face challenges in meeting these demands, especially with complex layouts, real-time data, or custom rendering. GPUI addresses these challenges through its design principles:&lt;/p&gt;</description></item><item><title>Rust Practical Field Guide</title><link>https://ai-blog.noorshomelab.dev/guides/rust-mastery-guide-2026/</link><pubDate>Fri, 20 Mar 2026 00:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/guides/rust-mastery-guide-2026/</guid><description>&lt;p&gt;Welcome to your comprehensive guide for mastering Rust! This journey is designed to take you from the very first steps of installation to building complex, production-ready applications. Rust is a modern systems programming language that prioritizes performance, reliability, and memory safety. It achieves this without needing a garbage collector, which is a key differentiator from many other popular languages.&lt;/p&gt;
&lt;h3 id="why-learn-rust"&gt;Why Learn Rust?&lt;/h3&gt;
&lt;p&gt;In real-world development, Rust is becoming an increasingly valuable tool for several reasons:&lt;/p&gt;</description></item></channel></rss>