<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Michael Malura</title>
        <link>https://malura.de</link>
        <description>My personal blog</description>
        <language>en</language>
        <copyright>Michael Malura</copyright>
        <pubDate>Fri, 14 Aug 2026 22:52:28 +0000</pubDate>        <atom:link href="https://malura.de/en/feed.xml" rel="self" type="application/rss+xml"/>        <item>
            <title>My deficit scale had never heard of my own settings</title>
            <link>https://malura.de/en/blog/my-deficit-scale-had-never-heard-of-my-own-settings</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/my-deficit-scale-had-never-heard-of-my-own-settings</guid>            <pubDate>Wed, 29 Jul 2026 00:00:00 +0000</pubDate>            <atom:updated>2026-07-29T17:02:02+00:00</atom:updated>            <description>Fast jeder Tag im Kalorien-Kalender war gelb oder rot, weil die Farbskala noch auf festen Schwellen von 700 und 300 kcal stand. Beim Umbau musste ich erst rausfinden, ab wann ein Defizit eigentlich zu hoch ist, und danach war das Ergebnis ein anderes als erwartet.</description>
        </item>        <item>
            <title>Cycling run through the numbers: 95 percent basal metabolism and a route with 0 km of new road</title>
            <link>https://malura.de/en/blog/cycling-run-through-the-numbers-95-percent-basal-metabolism-and-a-route-with-0-km-of-new-road</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/cycling-run-through-the-numbers-95-percent-basal-metabolism-and-a-route-with-0-km-of-new-road</guid>            <pubDate>Mon, 27 Jul 2026 00:00:00 +0000</pubDate>            <atom:updated>2026-07-26T22:04:15+00:00</atom:updated>            <description>23 GPX tracks, a physics model and a route planner that first suggested a loop without a single new kilometre. What came out of doing the maths on my evening ride.</description>
        </item>        <item>
            <title>Media Markt Gift Card Manager</title>
            <link>https://malura.de/en/blog/media-markt-gift-card-manager</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/media-markt-gift-card-manager</guid>            <pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T12:51:59+00:00</atom:updated>            <description>My employer gives me a 50-euro Media Markt voucher as a PDF every month. Nice perk, but when you order online and want to redeem several vouchers, it gets annoying: open the PDF, copy the card number, copy the PIN, enter them in the shop, open the next PDF, copy again. With four or five vouchers saved up, that&#039;s no fun.</description>
        </item>        <item>
            <title>Zigbee Plugs, Grafana Sankey and Water Consumption</title>
            <link>https://malura.de/en/blog/zigbee-plugs-grafana-sankey-and-water-consumption</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/zigbee-plugs-grafana-sankey-and-water-consumption</guid>            <pubDate>Tue, 21 Apr 2026 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T12:51:59+00:00</atom:updated>            <description>After getting so cozy with the Zigbee thermostats and temperature sensors, I&#039;ve now grabbed four Zigbee plugs to test. Sonoff S60ZBTPF, which have a power meter built in alongside the switchable relay. 53 euros for all four, so a good 13 euros apiece.</description>
        </item>        <item>
            <title>Anthbot Genie 600 robot mower hacked - hardcoded AWS keys and PIN in plaintext</title>
            <link>https://malura.de/en/blog/anthbot-genie-600-robot-mower-hacked-hardcoded-aws-keys-and-pin-in-plaintext</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/anthbot-genie-600-robot-mower-hacked-hardcoded-aws-keys-and-pin-in-plaintext</guid>            <pubDate>Fri, 17 Apr 2026 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T12:51:59+00:00</atom:updated>            <description>I bought myself an Anthbot Genie 600 robot mower and wanted to know what it was up to. After a few hours of nmap, tcpdump and Python scripting I had access to the complete device status, all sensor data, and I can send commands. The dumb part is that Anthbot uses hardcoded AWS credentials in their app that anyone can read out. With those, anyone who knows a serial number can control any Anthbot mower worldwide.</description>
        </item>        <item>
            <title>Splitting Up Grafana Dashboards and Building an ADS-B Wind Rose</title>
            <link>https://malura.de/en/blog/splitting-up-grafana-dashboards-and-building-an-ads-b-wind-rose</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/splitting-up-grafana-dashboards-and-building-an-ads-b-wind-rose</guid>            <pubDate>Thu, 16 Apr 2026 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T12:51:59+00:00</atom:updated>            <description>My Grafana dashboard was one single giant page with everything crammed in: server stats, Fritzbox, heating, power, PV - all in collapsed rows. It was annoying to navigate. So I spent an afternoon and split the thing into 5 specialized dashboards. Along the way I noticed that my heating&#039;s burner starts are suspiciously high, but that&#039;s a different story.</description>
        </item>        <item>
            <title>Viessmann vcontrold: 4 Years of Wrong Addresses and Too Much Cycling</title>
            <link>https://malura.de/en/blog/viessmann-vcontrold-4-years-of-wrong-addresses-and-too-much-cycling</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/viessmann-vcontrold-4-years-of-wrong-addresses-and-too-much-cycling</guid>            <pubDate>Thu, 16 Apr 2026 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T12:51:59+00:00</atom:updated>            <description>While cleaning up my Grafana dashboards I noticed that my Viessmann Vitoladens 300-C cycles way too often: 17-52 burner starts per day, averaging just 9 minutes per run. That&#039;s way too short for an oil condensing boiler. So I dug deeper and found a massive bug in my vcontrold config in the process. Since 2022 I&#039;d been reading and writing heating circuit 1 instead of heating circuit 2. All my heating curve changes went nowhere, all the logged values were phantom data.</description>
        </item>        <item>
            <title>Zigbee Smart Heating: Telegraf Crashes and TRVs Lie</title>
            <link>https://malura.de/en/blog/zigbee-smart-heating-telegraf-crashes-and-trvs-lie</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/zigbee-smart-heating-telegraf-crashes-and-trvs-lie</guid>            <pubDate>Thu, 16 Apr 2026 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T12:51:59+00:00</atom:updated>            <description>I have 6 Zigbee devices for heating control: 4 Sonoff thermostats (TRVs) and 2 temperature sensors. But only 3 of them showed up in InfluxDB. Telegraf was running, zigbee2mqtt too, but something in between was broken. So I debugged it.</description>
        </item>        <item>
            <title>VHF/UHF Multi-SDR Setup - One Antenna for Many Frequencies</title>
            <link>https://malura.de/en/blog/vhf-uhf-multi-sdr-setup-one-antenna-for-many-frequencies</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/vhf-uhf-multi-sdr-setup-one-antenna-for-many-frequencies</guid>            <pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T01:10:32+00:00</atom:updated>            <description>After the Flightradar ADS-B setup one thing was clear: RTL-SDR is a blast and I want to receive more. Air band, ACARS, NOAA weather satellites, marine VHF, ISM band - all in the VHF/UHF range between 100 MHz and 500 MHz. A discone antenna can do all of it, but with a single dongle I can only ever listen to one frequency at a time. So I&#039;m planning to grab an LNA, a 4-way splitter and four RTL-SDR sticks.</description>
        </item>        <item>
            <title>Smart Home Heating with Zigbee - Heating an Old Building More Efficiently</title>
            <link>https://malura.de/en/blog/smart-home-heating-with-zigbee-heating-an-old-building-more-efficiently</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/smart-home-heating-with-zigbee-heating-an-old-building-more-efficiently</guid>            <pubDate>Mon, 13 Apr 2026 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T01:10:32+00:00</atom:updated>            <description>I&#039;m currently heating my 1980s old building into the ground and I have no idea whether the heating curve is right. The Viessmann runs on slope 1.2 / level 3.0 and that&#039;s probably way too high. I have no sensors in the rooms, so no data. So I&#039;m getting Zigbee thermostats and temperature sensors for every room, all into Grafana, and then I can see where I&#039;m overheating.</description>
        </item>        <item>
            <title>Flightradar ADS-B feeder - tracking planes from the roof</title>
            <link>https://malura.de/en/blog/flightradar-ads-b-feeder-tracking-planes-from-the-roof</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/flightradar-ads-b-feeder-tracking-planes-from-the-roof</guid>            <pubDate>Mon, 13 Apr 2026 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T12:51:59+00:00</atom:updated>            <description>I wanted to know what&#039;s flying around up there, so I first applied for a free Flightradar24 receiver kit. They rejected me. So I dug out an old RTL-SDR dongle, plugged in a piece of wire as an emergency antenna and put it by the window. It worked surprisingly well; even with this makeshift setup I was able to track planes up to ~150km out.</description>
        </item>        <item>
            <title>RimWorld: A Complete Step-by-Step Guide to Beating the Game</title>
            <link>https://malura.de/en/blog/rimworld-a-complete-step-by-step-guide-to-beating-the-game</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/rimworld-a-complete-step-by-step-guide-to-beating-the-game</guid>            <pubDate>Fri, 21 Nov 2025 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T01:10:32+00:00</atom:updated>            <description>This guide offers a clear, practical step-by-step structure for building a stable colony and successfully finishing the game via the classic spaceship ending. The focus is on a standard game with a Crashlanded start and medium difficulty. Phase 1 – Start (Day 1–3): Securing Survival Hit pause and an…</description>
        </item>        <item>
            <title>How I Do Redirects with Nginx and Test Them with Python</title>
            <link>https://malura.de/en/blog/how-i-do-redirects-with-nginx-and-test-them-with-python</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/how-i-do-redirects-with-nginx-and-test-them-with-python</guid>            <pubDate>Tue, 11 Feb 2020 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T01:10:32+00:00</atom:updated>            <description>I needed a way to easily and quickly define lots of redirects for my blog. In this post I want to present my solution. First a .map file has to be created. Each line represents one redirect and should have the following format FROM TO;. It&#039;s important to end each line with a ;. /posts /blog; /en/blo…</description>
        </item>        <item>
            <title>Automatic export of my Viessmann heating system</title>
            <link>https://malura.de/en/blog/automatic-export-of-my-viessmann-heating-system</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/automatic-export-of-my-viessmann-heating-system</guid>            <pubDate>Tue, 24 Sep 2019 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T12:51:59+00:00</atom:updated>            <description>At the end of 2017 we replaced the 40-year-old oil heating with a new system from Viessmann. The modern unit provides lots of different data points and I&#039;ll explain how I read and process them. The whole thing runs with vcontrold over the serial interface, the data ends up in InfluxDB and is visuali…</description>
        </item>        <item>
            <title>Data logging my SMA Tripower 6.0 inverter</title>
            <link>https://malura.de/en/blog/data-logging-my-sma-tripower-6-0-inverter</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/data-logging-my-sma-tripower-6-0-inverter</guid>            <pubDate>Fri, 20 Sep 2019 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T12:51:59+00:00</atom:updated>            <description>My new inverter offers a wide range of data points that I actively log. I explain how I read them out and process them. The system pulls the CSV exports from the inverter daily via API, parses the data and writes it into InfluxDB. Grafana then shows production, revenue and peak power over time. The…</description>
        </item>        <item>
            <title>My Connected Home</title>
            <link>https://malura.de/en/blog/my-connected-home</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/my-connected-home</guid>            <pubDate>Wed, 18 Sep 2019 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T01:10:32+00:00</atom:updated>            <description>Over the next few posts I want to explain what data I collect in my house and how it gets processed. Why I collect data A few months ago one of my two SMA photovoltaic inverters broke and had to be replaced. Since both were already a few years old, I figured I&#039;d replace both of them with one new big…</description>
        </item>        <item>
            <title>Even more Docker containers</title>
            <link>https://malura.de/en/blog/even-more-docker-containers</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/even-more-docker-containers</guid>            <pubDate>Thu, 22 Aug 2019 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T01:10:32+00:00</atom:updated>            <description>As promised, here are a few more Docker containers from my homelab. Gogs version: &#039;2&#039; services: postgres: image: postgres:9.5 restart: always environment: - &quot;POSTGRES_USER=gogs&quot; - &quot;POSTGRES_PASSWORD=gogs&quot; - &quot;POSTGRES_DB=gogs&quot; volumes: - &quot;db-data:/var/lib/postgresql/data&quot; networks: - gogs gogs: image…</description>
        </item>        <item>
            <title>Reading the fingerprint of an SSH key</title>
            <link>https://malura.de/en/blog/reading-the-fingerprint-of-an-ssh-key</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/reading-the-fingerprint-of-an-ssh-key</guid>            <pubDate>Wed, 21 Aug 2019 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T01:10:32+00:00</atom:updated>            <description>I had to check which SSH key is stored on Github. But there only the fingerprint is shown, not the public key. The following command gives me the answer. cd ~/.ssh ssh-keygen -l -E md5 -f id_rsa # 2048 MD5:ab:cd:ef:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff michael@malura.de (RSA)</description>
        </item>        <item>
            <title>Sorting images with Exiftool</title>
            <link>https://malura.de/en/blog/sorting-images-with-exiftool</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/sorting-images-with-exiftool</guid>            <pubDate>Wed, 27 Feb 2019 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T01:10:32+00:00</atom:updated>            <description>Up to now I sorted our photos by hand into the following folder structure: Year/Month/Day/imagename-number.format Over time, though, this gets tedious and error-prone. So I wrote myself a script that is called by a cronjob and sorts new images every evening. #!/bin/sh # Basisverzeichnis DIR=&quot;/tank/p…</description>
        </item>        <item>
            <title>I&#039;m Learning C++ Again</title>
            <link>https://malura.de/en/blog/i-m-learning-c-again</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/i-m-learning-c-again</guid>            <pubDate>Sun, 27 Jan 2019 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T01:10:32+00:00</atom:updated>            <description>It&#039;s been a long time since I really worked with C++ seriously. Now I want to take a look at the current C++17 standard and dig deeper into the modern concepts. I&#039;m especially interested in smart pointers, lambda expressions, structured bindings and the new STL features. I&#039;ve also gotten a better ha…</description>
        </item>        <item>
            <title>My Favorite Docker Containers</title>
            <link>https://malura.de/en/blog/my-favorite-docker-containers</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/my-favorite-docker-containers</guid>            <pubDate>Thu, 17 Jan 2019 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T08:17:24+00:00</atom:updated>            <description>The following Docker containers are currently running in my homelab. Deluge Deluge is a torrent server. I prefer downloading my Linux ISOs via torrent and naturally want to give something back to the community. That&#039;s why I seed my favorite ISOs out into the wide world from my home server. version:…</description>
        </item>        <item>
            <title>The 6th Gamedev Gathering</title>
            <link>https://malura.de/en/blog/the-6th-gamedev-gathering</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/the-6th-gamedev-gathering</guid>            <pubDate>Sat, 29 Dec 2018 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T01:10:32+00:00</atom:updated>            <description>Today I focused entirely on Blender and learned how to work with it. Blender is just a fantastic tool. Up until that day I was pretty intimidated by it, but after a few videos and an open mind everything ran smoothly.</description>
        </item>        <item>
            <title>Reverse Engineering Presentation</title>
            <link>https://malura.de/en/blog/reverse-engineering-presentation</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/reverse-engineering-presentation</guid>            <pubDate>Mon, 26 Nov 2018 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T01:10:32+00:00</atom:updated>            <description>Well, that&#039;s that. Today my employer called me up and let me go. According to him, we didn&#039;t find an investor for our current project, so we have to put it on ice. It came pretty out of the blue, even though the economic situation had been tense lately. Now I have to go find something new again. But…</description>
        </item>        <item>
            <title>Anti cheat tricks - Variable offset</title>
            <link>https://malura.de/en/blog/anti-cheat-tricks-variable-offset</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/anti-cheat-tricks-variable-offset</guid>            <pubDate>Wed, 14 Nov 2018 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T01:10:32+00:00</atom:updated>            <description>A small class that shows how some developers obfuscate values in their games to prevent memory editing. This technique adds a random offset to stored values, which makes them harder to find and modify in memory scanners. #include &lt;iostream&gt; template&lt;typename T&gt; class OffsetVariable { private: T valu…</description>
        </item>        <item>
            <title>Base building example - Early prototype</title>
            <link>https://malura.de/en/blog/base-building-example-early-prototype</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/base-building-example-early-prototype</guid>            <pubDate>Thu, 08 Nov 2018 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T12:51:59+00:00</atom:updated>            <description>I&#039;m playing a lot of Rimworld right now and wanted to build a small proof of concept of the base-building system. You can find out more about the project here [[img:1]]</description>
        </item>        <item>
            <title>Ramda - Finding Duplicates in an Array</title>
            <link>https://malura.de/en/blog/ramda-finding-duplicates-in-an-array</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/ramda-finding-duplicates-in-an-array</guid>            <pubDate>Mon, 05 Nov 2018 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T01:10:32+00:00</atom:updated>            <description>For my current project I need to check that a list of transactions contains no duplicates (based on the transaction ID). Here&#039;s how I search for duplicates in lists, based on a property. const R = require(&#039;ramda&#039;); const data = { &#039;transactions&#039;: [{ // Transactions have to be unique &#039;transaction&#039;: &#039;A…</description>
        </item>        <item>
            <title>Ramda - Validating a Number Sequence</title>
            <link>https://malura.de/en/blog/ramda-validating-a-number-sequence</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/ramda-validating-a-number-sequence</guid>            <pubDate>Mon, 05 Nov 2018 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T01:10:32+00:00</atom:updated>            <description>I had to make sure I wasn&#039;t missing any events. So I built a concept with a number that counts up with every event. If the numbers aren&#039;t consecutive, I know the collection isn&#039;t valid. The solution uses Ramda for functional validation: events get sorted, the numbers extracted, and a reduce checks w…</description>
        </item>        <item>
            <title>Fourth Gamedev Gathering</title>
            <link>https://malura.de/en/blog/fourth-gamedev-gathering</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/fourth-gamedev-gathering</guid>            <pubDate>Sun, 28 Oct 2018 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T01:10:32+00:00</atom:updated>            <description>A few game developers get together every month to code games, drink, talk and have a good time. October 27, 2018 was another one of those days. We met up again at the Toolbox Bodensee, a big hackspace here in southern Germany. We kicked off at 10 a.m. with some Club Mate and talked a lot about our c…</description>
        </item>        <item>
            <title>My First Kaitai Struct</title>
            <link>https://malura.de/en/blog/my-first-kaitai-struct</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/my-first-kaitai-struct</guid>            <pubDate>Sat, 20 Oct 2018 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T12:51:59+00:00</atom:updated>            <description>Created a Kaitai struct for .chr files in Silver. You can find the code here. [[img:1]] Thanks to othias, he created the initial file parser.</description>
        </item>        <item>
            <title>My First Window Patch</title>
            <link>https://malura.de/en/blog/my-first-window-patch</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/my-first-window-patch</guid>            <pubDate>Wed, 10 Oct 2018 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T12:51:59+00:00</atom:updated>            <description>First attempt at binary patching. The idea is simple: open the executable, find the bytes you want to change and overwrite them directly. In this case I patched a conditional jump to skip a check entirely. It&#039;s the most straightforward way to permanently modify a program&#039;s behavior without injecting…</description>
        </item>        <item>
            <title>Silver Trainer Again</title>
            <link>https://malura.de/en/blog/silver-trainer-again</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/silver-trainer-again</guid>            <pubDate>Tue, 09 Oct 2018 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T12:51:59+00:00</atom:updated>            <description>Tinkered with the Silver Trainer again. Rebuilt it from scratch, and this time it reads and writes a lot more values: Level, HP, Gold, Strength, Agility and a few others. The hex dump on the left shows the raw memory region, the overlay on the right shows the parsed stats in real time. Way cleaner t…</description>
        </item>        <item>
            <title>Found Some Weird Phrases in Silver</title>
            <link>https://malura.de/en/blog/found-some-weird-phrases-in-silver</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/found-some-weird-phrases-in-silver</guid>            <pubDate>Sun, 07 Oct 2018 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T12:51:59+00:00</atom:updated>            <description>While I was inspecting Silver&#039;s memory, I found these phrases. [[img:1]]</description>
        </item>        <item>
            <title>My First DLL Proxy</title>
            <link>https://malura.de/en/blog/my-first-dll-proxy</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/my-first-dll-proxy</guid>            <pubDate>Fri, 28 Sep 2018 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T12:51:59+00:00</atom:updated>            <description>Got a DLL proxy working for the first time. The idea: you replace a DLL that the target application loads with your own version. Your proxy DLL forwards all the original function calls to the real DLL while also running your custom code. A clean way to hook into a process without modifying the execu…</description>
        </item>        <item>
            <title>I called a game function</title>
            <link>https://malura.de/en/blog/i-called-a-game-function</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/i-called-a-game-function</guid>            <pubDate>Thu, 27 Sep 2018 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T12:51:59+00:00</atom:updated>            <description>I managed to call an internal game function directly from injected code. With a disassembler I found the function address, figured out the calling convention and the parameter layout, then called it from my DLL. That basically gives you full control over the internal game logic. Thanks to Guided Hac…</description>
        </item>        <item>
            <title>My First Trainer</title>
            <link>https://malura.de/en/blog/my-first-trainer</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/my-first-trainer</guid>            <pubDate>Tue, 25 Sep 2018 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T12:51:59+00:00</atom:updated>            <description>Built my first game trainer in C++. It scans the target process&#039;s memory, finds the relevant addresses and lets you modify values like health or ammo at runtime. The trainer attaches to the game via OpenProcess, scans memory for specific patterns to find player data structures, then writes new value…</description>
        </item>        <item>
            <title>My first DLL injection</title>
            <link>https://malura.de/en/blog/my-first-dll-injection</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/my-first-dll-injection</guid>            <pubDate>Mon, 24 Sep 2018 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T12:51:59+00:00</atom:updated>            <description>For the first time I injected my own DLL into a running process. The injector in C++ uses CreateRemoteThread to load the DLL into the target. Once inside, the DLL hooks a few functions and writes debug output. The injector opens the target process, allocates memory for the DLL path, writes it into t…</description>
        </item>        <item>
            <title>Downloading my GOG library</title>
            <link>https://malura.de/en/blog/downloading-my-gog-library</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/downloading-my-gog-library</guid>            <pubDate>Sat, 01 Sep 2018 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T01:10:32+00:00</atom:updated>            <description>I wanted to back up all my games from GOG. So I found this handy tool. You need the lgogdownloader either from Github or via your package manager $ lgogdownloader # provide your email, password and code $ lgogdownloader --language=de,en --update-cache $ cd YOUR_DOWNLOAD_DIRECTORY $ lgogdownloader --…</description>
        </item>        <item>
            <title>Fixing Debian sound problems</title>
            <link>https://malura.de/en/blog/fixing-debian-sound-problems</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/fixing-debian-sound-problems</guid>            <pubDate>Thu, 30 Aug 2018 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T01:10:32+00:00</atom:updated>            <description>When I use Debian, I sometimes hear pretty heavy distortion, lags and crackling while listening to Spotify or playing games. These settings helped me fix the problem. $ sudo nano /etc/pulse/daemon.conf # search for ; default-fragment-size-msec # remove the ; and set its value to something below 50 #…</description>
        </item>        <item>
            <title>Starting the Android Emulator from the terminal</title>
            <link>https://malura.de/en/blog/starting-the-android-emulator-from-the-terminal</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/starting-the-android-emulator-from-the-terminal</guid>            <pubDate>Tue, 14 Aug 2018 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T01:10:32+00:00</atom:updated>            <description>I needed a way to start the Android emulator without having to open Android Studio. First I tried the standard emulator command, but that didn&#039;t work. $ emulator -avd Pixel_XL_API_25 PANIC: Missing emulator engine program for &#039;x86&#039; CPU. So I searched the web and found out that I had to start a diffe…</description>
        </item>        <item>
            <title>Turbo Mage - Early Prototype</title>
            <link>https://malura.de/en/blog/turbo-mage-early-prototype</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/turbo-mage-early-prototype</guid>            <pubDate>Fri, 29 Jun 2018 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T12:51:59+00:00</atom:updated>            <description>Early screenshot of Turbo Mage, a little game I built during a gamedev gathering. You play a mage fighting your way through levels. The whole thing was hacked together over the weekend. This shows one of the first playable states with basic movement and spell mechanics that actually work. [[img:1]]</description>
        </item>        <item>
            <title>Pirates - Early Prototype</title>
            <link>https://malura.de/en/blog/pirates-early-prototype</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/pirates-early-prototype</guid>            <pubDate>Fri, 22 Jun 2018 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T12:51:59+00:00</atom:updated>            <description>Early prototype of a pirate game. The core idea was a top-down sailing and combat game where you navigate between islands. Still very rough at this point. Just basic movement and a tilemap. But the concept was fun to mess around with. [[img:1]]</description>
        </item>        <item>
            <title>Splitting CSV files</title>
            <link>https://malura.de/en/blog/splitting-csv-files</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/splitting-csv-files</guid>            <pubDate>Mon, 26 Mar 2018 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T01:10:32+00:00</atom:updated>            <description>I had to split a CSV with 14k entries into several files because the import crashed on one of our servers when I imported everything at once. # split -l lines file_to_split output/ $ split -l 4000 export.csv export/venues $ ls venues venuesaa venuesab venuesac venuesad $ cd export # append .csv exte…</description>
        </item>        <item>
            <title>MySQL Import/Export</title>
            <link>https://malura.de/en/blog/mysql-import-export</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/mysql-import-export</guid>            <pubDate>Thu, 22 Mar 2018 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T01:10:32+00:00</atom:updated>            <description>With these snippets I can create a complete dump of a MySQL database. dump mysqldump --host=&quot;xyz&quot; \ --user=&quot;xyz&quot; --password=&quot;xyz&quot; \ --default-character-set=latin1 \ --result-file=&quot;./dump.sql&quot; \ --lock-tables --add-locks --create-options \ --extended-insert --add-drop-table --disable-keys \ databasen…</description>
        </item>        <item>
            <title>Creating an SSH Tunnel</title>
            <link>https://malura.de/en/blog/creating-an-ssh-tunnel</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/creating-an-ssh-tunnel</guid>            <pubDate>Thu, 22 Mar 2018 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T08:17:24+00:00</atom:updated>            <description>#ssh -f user@remotehost -L localport:127.0.0.1:remoteport -N $ ssh -f root@database -L 3307:127.0.0.1:3306 -N Now it is possible to connect to a remote mysql database via the tunnel.</description>
        </item>        <item>
            <title>Recognizing Trading Cards with OpenCV</title>
            <link>https://malura.de/en/blog/recognizing-trading-cards-with-opencv</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/recognizing-trading-cards-with-opencv</guid>            <pubDate>Fri, 06 Oct 2017 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T12:51:59+00:00</atom:updated>            <description>Prototype for automatically recognizing trading cards via camera. OpenCV detects the cards in the image and matches them against a database. Works pretty well already, as long as the lighting is halfway decent. [[img:1]] [[img:2]] [[img:3]]</description>
        </item>        <item>
            <title>Trading Bot - Learning Strategies</title>
            <link>https://malura.de/en/blog/trading-bot-learning-strategies</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/trading-bot-learning-strategies</guid>            <pubDate>Thu, 05 Oct 2017 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T12:51:59+00:00</atom:updated>            <description>Further development of the trading bot: now it can test different strategies on historical data. The charts show the performance of the individual strategies side by side. That makes it possible to see which approaches even make sense before risking real money. [[img:1]] [[img:2]] [[img:3]] [[img:4]…</description>
        </item>        <item>
            <title>Trading Bot - Early Prototype</title>
            <link>https://malura.de/en/blog/trading-bot-early-prototype</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/trading-bot-early-prototype</guid>            <pubDate>Fri, 15 Sep 2017 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T12:51:59+00:00</atom:updated>            <description>First prototype of a trading bot for Ripple. The UI shows live charts and order book data. Everything built in Node.js, still without any real strategy logic. [[img:1]] [[img:2]] [[img:3]] [[img:4]] [[img:5]] [[img:6]] [[img:7]]</description>
        </item>        <item>
            <title>King Marshmallow - More Features</title>
            <link>https://malura.de/en/blog/king-marshmallow-more-features</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/king-marshmallow-more-features</guid>            <pubDate>Wed, 13 Sep 2017 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T12:51:59+00:00</atom:updated>            <description>Built some new features into King Marshmallow. The game runs on Love2D and Lua. Here are a few screenshots of the current state with new levels, mechanics and UI elements. Bit by bit it&#039;s getting more playable. [[img:1]] [[img:2]] [[img:3]] [[img:4]] [[img:5]] [[img:6]] [[img:7]] [[img:8]] [[img:9]]…</description>
        </item>        <item>
            <title>King Marshmallow - Early Prototype</title>
            <link>https://malura.de/en/blog/king-marshmallow-early-prototype</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/king-marshmallow-early-prototype</guid>            <pubDate>Thu, 10 Aug 2017 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T12:51:59+00:00</atom:updated>            <description>End of the year and I had the idea to build a simple idle game. [[img:1]]</description>
        </item>        <item>
            <title>Tetris with LÖVE</title>
            <link>https://malura.de/en/blog/tetris-with-love</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/tetris-with-love</guid>            <pubDate>Tue, 08 Aug 2017 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T12:51:59+00:00</atom:updated>            <description>A buddy of mine challenged me to create a tetris game. Delivered a couple of hours later. [[img:1]] [[img:2]] [[img:3]]</description>
        </item>        <item>
            <title>OpenGL just for fun</title>
            <link>https://malura.de/en/blog/opengl-just-for-fun</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/opengl-just-for-fun</guid>            <pubDate>Mon, 01 May 2017 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T12:51:59+00:00</atom:updated>            <description>Just messed around with OpenGL for a bit. No concrete goal, just to see what&#039;s possible. Built a few different scenes with lighting, textures and simple geometry. All in C++ with raw OpenGL, no engine overhead. [[img:4]] [[img:5]] [[img:6]] [[img:7]] [[img:3]] [[img:1]] [[img:8]] [[img:2]] [[img:9]]…</description>
        </item>        <item>
            <title>My New Job at Socialbit GmbH</title>
            <link>https://malura.de/en/blog/my-new-job-at-socialbit-gmbh</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/my-new-job-at-socialbit-gmbh</guid>            <pubDate>Fri, 01 Jan 2016 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T01:10:32+00:00</atom:updated>            <description>New year, new job! Starting in January 2016 I&#039;m working as a team lead and senior software developer at Socialbit GmbH. I&#039;m looking forward to the new challenges and to working with the team. At Socialbit we build mobile apps and backend systems with state-of-the-art technologies.</description>
        </item>        <item>
            <title>GPS tracking with Node.js</title>
            <link>https://malura.de/en/blog/gps-tracking-with-node-js</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/gps-tracking-with-node-js</guid>            <pubDate>Fri, 18 Dec 2015 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T12:51:59+00:00</atom:updated>            <description>On a long drive across Germany I wrote a script that tracks your position and speed. [[img:1]]</description>
        </item>        <item>
            <title>My first OSX app</title>
            <link>https://malura.de/en/blog/my-first-osx-app</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/my-first-osx-app</guid>            <pubDate>Sun, 30 Aug 2015 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T12:51:59+00:00</atom:updated>            <description>After I&#039;d built the HTML prototype of my watchlist tool, I wanted to give Swift a try. [[img:1]] [[img:2]]</description>
        </item>        <item>
            <title>Watchlist Prototype</title>
            <link>https://malura.de/en/blog/watchlist-prototype</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/watchlist-prototype</guid>            <pubDate>Wed, 26 Aug 2015 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T12:51:59+00:00</atom:updated>            <description>I built a simple prototype for the watchlist app. With it I could track my TV series, search for new shows and add them to my list. The screenshot shows the first HTML version with jQuery. At the top the current series as banners (Ugly Americans, Under the Dome, Mythbusters, Big Bang Theory), at the…</description>
        </item>        <item>
            <title>GPhoto in the Browser</title>
            <link>https://malura.de/en/blog/gphoto-in-the-browser</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/gphoto-in-the-browser</guid>            <pubDate>Thu, 26 Feb 2015 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T12:51:59+00:00</atom:updated>            <description>A web interface to remote-control my DSLR via GPhoto. Change camera settings and trigger the shutter, all straight from the browser. The interface talks to GPhoto2 on a Raspberry Pi that&#039;s connected to the DSLR over USB. In the browser I can adjust shutter speed, aperture and ISO, then fire the shut…</description>
        </item>        <item>
            <title>My First Component Entity System in Java</title>
            <link>https://malura.de/en/blog/my-first-component-entity-system-in-java</link>
            <author>michael@malura.de (Michael Malura)</author>
            <guid isPermaLink="true">https://malura.de/en/blog/my-first-component-entity-system-in-java</guid>            <pubDate>Fri, 10 Jan 2014 00:00:00 +0000</pubDate>            <atom:updated>2026-06-27T12:51:59+00:00</atom:updated>            <description>The basics work [[img:1]] OBJ files can be loaded [[img:2]] Here I implemented text rendering [[img:3]]</description>
        </item>    </channel>
</rss>