<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Lukas Hammer</title>
    <description>The latest articles on Forem by Lukas Hammer (@minipliy).</description>
    <link>https://forem.com/minipliy</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3483587%2Fb0cbbfac-7961-4ecc-bd71-00a72302854f.JPG</url>
      <title>Forem: Lukas Hammer</title>
      <link>https://forem.com/minipliy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/minipliy"/>
    <language>en</language>
    <item>
      <title>Level Up Your Linux Game: My Journey Through OverTheWire’s Bandit &amp; Natas</title>
      <dc:creator>Lukas Hammer</dc:creator>
      <pubDate>Mon, 09 Feb 2026 13:03:39 +0000</pubDate>
      <link>https://forem.com/minipliy/level-up-your-linux-game-my-journey-through-overthewires-bandit-natas-47ho</link>
      <guid>https://forem.com/minipliy/level-up-your-linux-game-my-journey-through-overthewires-bandit-natas-47ho</guid>
      <description>&lt;p&gt;If you’ve ever wanted to feel like a hacker in a 90s movie—minus the glowing green rain and the frantic "I'm in"—wargames are the place to start. Specifically, &lt;strong&gt;OverTheWire&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;I recently dove into their challenges to sharpen my technical skills, and it’s been a wild ride of "Aha!" moments and "Wait, what?" frustrations. This post is just the beginning; &lt;strong&gt;I’ll be updating this blog with every other OverTheWire wargame level as I complete them&lt;/strong&gt;, but for now, let’s look at my experience with the first two: &lt;strong&gt;Bandit&lt;/strong&gt; and &lt;strong&gt;Natas&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Bandit: The Gold Standard for Linux Newbies
&lt;/h2&gt;

&lt;p&gt;Bandit is the entry-level wargame, and honestly, it is a masterclass in learning by doing. &lt;/p&gt;

&lt;h3&gt;
  
  
  The Vibe
&lt;/h3&gt;

&lt;p&gt;It starts simple—find a password in a file called &lt;code&gt;readme&lt;/code&gt;. But soon, you’re hunting for hidden files, filtering strings with &lt;code&gt;grep&lt;/code&gt;, and learning how to navigate a terminal like a pro.&lt;/p&gt;

&lt;h3&gt;
  
  
  The "Fun" Factor
&lt;/h3&gt;

&lt;p&gt;It is incredibly satisfying. Because the game forces you to figure things out yourself, every level you beat feels like a genuine win. It’s tricky, but it feels fair. &lt;/p&gt;

&lt;h3&gt;
  
  
  The Flow
&lt;/h3&gt;

&lt;p&gt;For the most part, Bandit is &lt;strong&gt;perfectly paced&lt;/strong&gt;. I almost always knew exactly what to do after reading through the documentation for the suggested commands. It strikes that rare balance of being challenging without being confusing.&lt;/p&gt;

&lt;h3&gt;
  
  
  The GitHub Twist
&lt;/h3&gt;

&lt;p&gt;The shift toward using Git and GitHub toward the end is a very cool touch. However, this was the one area that felt a bit &lt;strong&gt;random&lt;/strong&gt;. Unlike the previous levels, the guidance here felt a bit thin, making the tasks feel slightly disconnected from the steady climb of the earlier stages. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verdict:&lt;/strong&gt; Essential for anyone who wants to stop being afraid of the command line.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Natas: Entering the Web Wilderness
&lt;/h2&gt;

&lt;p&gt;Once you’ve conquered the terminal, Natas introduces you to &lt;strong&gt;Serverside Web Security&lt;/strong&gt;. This is where the training wheels come off—and the bike might feel like it's missing a wheel.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Learning Curve
&lt;/h3&gt;

&lt;p&gt;Unlike Bandit, which guides you through documentation, Natas can feel a bit "random" if you don’t have prior web knowledge. Without that background:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;You're Directionless:&lt;/strong&gt; You have no idea what the goal is or where to start looking for the vulnerability.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Search Paralysis:&lt;/strong&gt; You don't even know what terms to Google. It’s hard to find an answer when you don't even know what the problem is called.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Verdict:&lt;/strong&gt; A great challenge for aspiring security buffs, but you definitely need a baseline of web development knowledge before diving in.&lt;/p&gt;




&lt;h2&gt;
  
  
  What’s Next?
&lt;/h2&gt;

&lt;p&gt;Wargames are easily one of the most addictive ways to learn tech. They strip away the boring lectures and replace them with a puzzle-solving rush. While the jump to Natas is steep, the solid foundation built in Bandit makes it all worth it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stay tuned, because as I fight my way through Krypton, Leviathan, and the rest, I'll be adding my thoughts and progress right here.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Pro Tip:&lt;/strong&gt; In Bandit, actually read the &lt;code&gt;man&lt;/code&gt; pages (manuals) for the suggested commands. They usually hold the "key" to the password!&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>wargames</category>
      <category>hacking</category>
      <category>security</category>
      <category>linux</category>
    </item>
    <item>
      <title>Building My First Emulator: A CHIP-8 Journey in Rust</title>
      <dc:creator>Lukas Hammer</dc:creator>
      <pubDate>Sun, 08 Feb 2026 15:08:26 +0000</pubDate>
      <link>https://forem.com/minipliy/building-my-first-emulator-a-chip-8-journey-in-rust-3gbg</link>
      <guid>https://forem.com/minipliy/building-my-first-emulator-a-chip-8-journey-in-rust-3gbg</guid>
      <description>&lt;h2&gt;
  
  
  Building My First Emulator: A CHIP-8 Journey in Rust
&lt;/h2&gt;

&lt;p&gt;When I decided to build a CHIP-8 emulator, I had no idea how much I'd learn along the way. This was my first time creating an emulator &lt;em&gt;and&lt;/em&gt; my first big Rust project—quite the combination! But looking back now, with both a desktop and web version running, I couldn't be more proud of what I've accomplished.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why CHIP-8?
&lt;/h2&gt;

&lt;p&gt;CHIP-8 is the perfect starting point for emulator development. It's simple enough to be approachable but complex enough to teach you real emulation concepts. With only 35 opcodes, 4KB of memory, and a 64x32 monochrome display, it's manageable yet challenging.&lt;/p&gt;

&lt;p&gt;Plus, I wanted to really dive into Rust. What better way to learn than building something complex?&lt;/p&gt;

&lt;h2&gt;
  
  
  The Core: Platform-Agnostic Interpreter
&lt;/h2&gt;

&lt;p&gt;I started by building the core CHIP-8 interpreter—the brain of the emulator. This handles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CPU emulation with 16 8-bit registers&lt;/li&gt;
&lt;li&gt;4KB of RAM&lt;/li&gt;
&lt;li&gt;A 16-level stack&lt;/li&gt;
&lt;li&gt;Two 60Hz timers (delay and sound)&lt;/li&gt;
&lt;li&gt;The full instruction set&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Writing this in Rust taught me so much about ownership and borrowing. The compiler kept me honest, catching bugs before they became problems. Every error message was a learning opportunity.&lt;/p&gt;

&lt;p&gt;The beauty of separating the core logic? I could reuse it for both desktop and web versions later!&lt;/p&gt;

&lt;h2&gt;
  
  
  Desktop Version: SDL2 Window to the Past
&lt;/h2&gt;

&lt;p&gt;For the desktop frontend, I used SDL2 to handle graphics, input, and window management. This was my first time working with SDL2, and it was surprisingly straightforward.&lt;/p&gt;

&lt;p&gt;The desktop version lets you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Load ROM files from your filesystem
&lt;/li&gt;
&lt;li&gt;Play games with keyboard input (mapped to CHIP-8's 16-key hexadecimal keypad)&lt;/li&gt;
&lt;li&gt;See the classic 64x32 display scaled up to a comfortable size&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Web Version: WebAssembly Magic
&lt;/h2&gt;

&lt;p&gt;This is where things got really exciting. I wanted people to play my emulator without installing anything, so I dove into WebAssembly.&lt;/p&gt;

&lt;p&gt;Using &lt;code&gt;wasm-pack&lt;/code&gt;, I compiled my Rust code to WebAssembly and created a browser-based version. The same core interpreter, now running in your browser with near-native performance!&lt;/p&gt;

&lt;p&gt;The web version taught me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to bridge Rust and JavaScript&lt;/li&gt;
&lt;li&gt;Working with the browser's canvas API&lt;/li&gt;
&lt;li&gt;Handling user input in web contexts&lt;/li&gt;
&lt;li&gt;Deploying WebAssembly applications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Seeing my Rust code run in a browser for the first time was genuinely magical.&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenges Along the Way
&lt;/h2&gt;

&lt;p&gt;Not everything went smoothly (does it ever?):&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The wasm32 Target Mystery&lt;/strong&gt;: I initially installed Rust via Homebrew, which didn't include the WebAssembly target. Switching to Rustup and adding &lt;code&gt;wasm32-unknown-unknown&lt;/code&gt; solved it, but it was a confusing detour.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LSP Configuration Headaches&lt;/strong&gt;: Getting my Neovim setup to work with both Rust and JavaScript auto-formatting took some trial and error. But now my workflow is smooth!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Opcode Implementation&lt;/strong&gt;: Some instructions were straightforward, but others (looking at you, display drawing with XOR) required careful testing with multiple ROMs to get right.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;This project taught me far more than just Rust syntax:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Systems Programming&lt;/strong&gt;: Understanding how CPUs work, memory management, and instruction cycles&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-Platform Development&lt;/strong&gt;: Building for both native desktop and web from a single codebase&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Project Structure&lt;/strong&gt;: Organizing code into modules (&lt;code&gt;chip8_core&lt;/code&gt;, &lt;code&gt;desktop&lt;/code&gt;, &lt;code&gt;wasm&lt;/code&gt;, &lt;code&gt;website&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Debugging&lt;/strong&gt;: Using test ROMs to verify my implementation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modern Web Tech&lt;/strong&gt;: WebAssembly isn't just hype—it's genuinely powerful&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try It Yourself!
&lt;/h2&gt;

&lt;p&gt;You can play the emulator right now at &lt;strong&gt;&lt;a href="https://minipliy.net/chip8/" rel="noopener noreferrer"&gt;minipliy.net/chip8&lt;/a&gt;&lt;/strong&gt; or check out the source code on &lt;a href="https://github.com/Minipliy/chip8_rust" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;If you're learning Rust or curious about emulator development, I highly recommend starting with CHIP-8. It's challenging enough to push your skills but achievable enough to finish. And seeing those retro games come to life through code you wrote? Absolutely worth it.&lt;/p&gt;

&lt;p&gt;Big thanks to &lt;a href="https://github.com/aquova/chip8-book" rel="noopener noreferrer"&gt;aquova's CHIP-8 tutorial&lt;/a&gt; for guidance along the way!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Want to build your own emulator?&lt;/strong&gt; Start with CHIP-8, embrace the compiler errors, and enjoy the journey. You'll learn more than you expect.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Made with Love and Rust&lt;/em&gt;&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>rust</category>
      <category>emulator</category>
      <category>chip8</category>
    </item>
    <item>
      <title>My Rust Learning Journey: Challenges, Projects, and Growth</title>
      <dc:creator>Lukas Hammer</dc:creator>
      <pubDate>Sat, 06 Sep 2025 14:14:37 +0000</pubDate>
      <link>https://forem.com/minipliy/my-rust-learning-journey-challenges-projects-and-growth-3akh</link>
      <guid>https://forem.com/minipliy/my-rust-learning-journey-challenges-projects-and-growth-3akh</guid>
      <description>&lt;p&gt;I've been spending a lot of time with "The Rust Programming Language" lately, and honestly, it’s been a game-changer. I’ve been working through the exercises in the 2023 edition to get a real feel for how the language works.&lt;/p&gt;

&lt;p&gt;Rust isn't exactly easy—the ownership system and the compiler can be pretty demanding—but that’s what makes it so rewarding. I’ve been practicing the core concepts like borrowing, using collections, and handling errors properly. One project I really enjoyed was building a Median and Mode Finder. It was a great way to practice parsing input and managing data, especially when handling multiple modes at once.&lt;/p&gt;

&lt;p&gt;Each chapter helps me feel more confident in my code. The book does a fantastic job of giving you just enough guidance while still letting you solve problems on your own. If you’re thinking about learning Rust, I’d highly recommend starting there; it's an incredible resource. I’m excited to keep building and see where this goes next.&lt;/p&gt;

&lt;p&gt;Also check out all of the projects on &lt;a href="https://github.com/Minipliy/rust-book-2e-projects" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>rust</category>
      <category>programming</category>
      <category>learning</category>
    </item>
  </channel>
</rss>
