<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<title>Emil Miler</title>
	<link href="https://em.0x45.cz/atom.xml" rel="self" type="application/atom+xml"/>
  <link href="https://em.0x45.cz"/>
	<generator uri="https://www.getzola.org/">Zola</generator>
	<updated>2026-02-12T00:00:00+00:00</updated>
	<id>https://em.0x45.cz/atom.xml</id>
	<entry xml:lang="en">
		<title>Analyzing Truck Load Using Image Recognition</title>
		<published>2026-02-12T00:00:00+00:00</published>
		<updated>2026-02-12T00:00:00+00:00</updated>
		<link href="https://em.0x45.cz/posts/analyzing-truck-load-using-image-recognition/" type="text/html"/>
		<id>https://em.0x45.cz/posts/analyzing-truck-load-using-image-recognition/</id>
		<summary type="html">&lt;p&gt;A friend of mine asked for help expanding an image recognition system he is implementing at work. The &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;roboflow.com&#x2F;&quot;&gt;Roboflow&lt;&#x2F;a&gt; pipeline analyzes images of open trucks and tags all visible cargo with the appropriate label and dimensions.&lt;&#x2F;p&gt;
&lt;p&gt;The goal was to extend the output to display the percentage of the truck’s maximum capacity being used. To achieve this, I integrated a custom Python script into the existing pipeline.&lt;&#x2F;p&gt;</summary>
	</entry>
	<entry xml:lang="en">
		<title>Tea Timer in Bash</title>
		<published>2025-10-29T00:00:00+00:00</published>
		<updated>2025-10-29T00:00:00+00:00</updated>
		<link href="https://em.0x45.cz/posts/tea-timer-in-bash/" type="text/html"/>
		<id>https://em.0x45.cz/posts/tea-timer-in-bash/</id>
		<summary type="html">&lt;p&gt;I grew tired of unlocking my phone and starting a timer every time I brewed tea. Running a simple shell script is far more convenient, and writing it also gave me a chance to refresh my dulled shell scripting skills.&lt;&#x2F;p&gt;</summary>
	</entry>
	<entry xml:lang="en">
		<title>Issues With OpenVPN &amp; MikroTik</title>
		<published>2025-10-22T00:00:00+00:00</published>
		<updated>2025-10-22T00:00:00+00:00</updated>
		<link href="https://em.0x45.cz/posts/issues-with-openvpn-and-mikrotik/" type="text/html"/>
		<id>https://em.0x45.cz/posts/issues-with-openvpn-and-mikrotik/</id>
		<summary type="html">&lt;p&gt;I started having issues with my an existing OpenVPN tunnel after setting up a new MikroTik router in my home network.&lt;&#x2F;p&gt;
&lt;p&gt;The symptoms were strange: I could resolve addresses through DNS, ping all hosts on the network, and access HTTP sites without issues. However, when I tried to SSH into any machine or access HTTPS services, the connection would time out.&lt;&#x2F;p&gt;</summary>
	</entry>
	<entry xml:lang="en">
		<title>Installing openQA on Kubernetes with Helm Charts</title>
		<published>2025-06-04T00:00:00+00:00</published>
		<updated>2025-06-04T00:00:00+00:00</updated>
		<link href="https://em.0x45.cz/posts/installing-openqa-on-kubernetes-with-helm-charts/" type="text/html"/>
		<id>https://em.0x45.cz/posts/installing-openqa-on-kubernetes-with-helm-charts/</id>
		<summary type="html">&lt;p&gt;Recently, I experimented with Kubernetes by installing &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;open.qa&#x2F;&quot;&gt;openQA&lt;&#x2F;a&gt; using Helm Charts. This article is a simple guide on how to do the same locally on your computer, with minimal effort.&lt;&#x2F;p&gt;</summary>
	</entry>
	<entry xml:lang="en">
		<title>Enabling USB-C Chargers on Miniware MDP-M905</title>
		<published>2025-01-08T00:00:00+00:00</published>
		<updated>2025-01-08T00:00:00+00:00</updated>
		<link href="https://em.0x45.cz/posts/enabling-usb-c-chargers-on-miniware-mdp-m905/" type="text/html"/>
		<id>https://em.0x45.cz/posts/enabling-usb-c-chargers-on-miniware-mdp-m905/</id>
		<summary type="html">&lt;p&gt;The &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.morningtools.com&#x2F;article&#x2F;116&#x2F;533.html&quot;&gt;MDP-M905&lt;&#x2F;a&gt; is a small power supply by Miniware, known for their TS100 and TS80 series of smart soldering irons. The issue with the MDP-M905 is that it doesn’t work with USB-C chargers, only USB-A. This article describes a way to enable this missing functionality through good old-fashioned hardware hacking.&lt;&#x2F;p&gt;</summary>
	</entry>
	<entry xml:lang="en">
		<title>Streaming camera output trough UDP</title>
		<published>2024-11-14T00:00:00+00:00</published>
		<updated>2024-11-14T00:00:00+00:00</updated>
		<link href="https://em.0x45.cz/posts/streaming-camera-output-trough-udp/" type="text/html"/>
		<id>https://em.0x45.cz/posts/streaming-camera-output-trough-udp/</id>
		<summary type="html">&lt;p&gt;I had an interesting assignment to set up a low-latency video stream from a camera to a TV screen on the third floor of a building for a short event. I came up with a simple solution: streaming it directly over UDP using OBS and capturing the stream with MPV.&lt;&#x2F;p&gt;</summary>
	</entry>
	<entry xml:lang="en">
		<title>About that Hadog stawberry special…</title>
		<published>2024-05-29T00:00:00+00:00</published>
		<updated>2024-05-29T00:00:00+00:00</updated>
		<link href="https://em.0x45.cz/posts/about-that-hadog-strawberry-special/" type="text/html"/>
		<id>https://em.0x45.cz/posts/about-that-hadog-strawberry-special/</id>
		<summary type="html">&lt;p&gt;OK, so I was feeling adventurous today and decided to try out the new &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.hadog.cz&quot;&gt;Hadog&lt;&#x2F;a&gt; special strawberry burger.&lt;&#x2F;p&gt;</summary>
	</entry>
	<entry xml:lang="en">
		<title>101, I Salute You</title>
		<published>2024-05-06T00:00:00+00:00</published>
		<updated>2024-05-06T00:00:00+00:00</updated>
		<link href="https://em.0x45.cz/posts/101-i-salute-you/" type="text/html"/>
		<id>https://em.0x45.cz/posts/101-i-salute-you/</id>
		<summary type="html">&lt;p&gt;There once existed a singular establishment known as “101,” a place that, though no longer standing, will forever be enshrined in the memories of those fortunate – or perhaps unfortunate – enough to have crossed its threshold. Its walls witnessed many a tale of intrigue, mischief, and debauchery, none of which could be considered anything but extraordinary.&lt;&#x2F;p&gt;</summary>
	</entry>
	<entry xml:lang="en">
		<title>Zola deployment with Gitea Actions and Rsync</title>
		<published>2024-01-19T00:00:00+00:00</published>
		<updated>2024-01-19T00:00:00+00:00</updated>
		<link href="https://em.0x45.cz/posts/zola-deployment-with-gitea-actions-and-rsync/" type="text/html"/>
		<id>https://em.0x45.cz/posts/zola-deployment-with-gitea-actions-and-rsync/</id>
		<summary type="html">&lt;p&gt;Gitea now has a native support for Actions, which is a clone of GitHub Actions with the same syntax. Since Drone CI – which was the topic of an older article – seems to get slowly abandoned by upstream and Gitea Actions are now stable, it is a good idea to switch.&lt;&#x2F;p&gt;</summary>
	</entry>
	<entry xml:lang="en">
		<title>Taking screenshots on Wayland with Grim and Slurp</title>
		<published>2024-01-18T00:00:00+00:00</published>
		<updated>2024-01-18T00:00:00+00:00</updated>
		<link href="https://em.0x45.cz/posts/taking-screenshots-on-wayland-with-grim-and-slurp/" type="text/html"/>
		<id>https://em.0x45.cz/posts/taking-screenshots-on-wayland-with-grim-and-slurp/</id>
		<summary type="html">&lt;p&gt;I have done some experimenting with &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;codeberg.org&#x2F;dwl&#x2F;dwl&quot;&gt;dwl&lt;&#x2F;a&gt; and &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;isaacfreund.com&#x2F;software&#x2F;river&#x2F;&quot;&gt;river&lt;&#x2F;a&gt; on Wayland, which requires a change of my X11 setup. This article quickly explains how to replace the old &lt;a href=&quot;https:&#x2F;&#x2F;em.0x45.cz&#x2F;posts&#x2F;taking-screenshots-with-shotgun-and-slop&#x2F;&quot;&gt;Shotgun and Slop&lt;&#x2F;a&gt; for a simple Wayland alternative.&lt;&#x2F;p&gt;</summary>
	</entry>
	<entry xml:lang="en">
		<title>Automatic X11 scaling with autorandr and dwm</title>
		<published>2022-12-18T00:00:00+00:00</published>
		<updated>2022-12-18T00:00:00+00:00</updated>
		<link href="https://em.0x45.cz/posts/automatic-x11-scaling-with-autorandr-and-dwm/" type="text/html"/>
		<id>https://em.0x45.cz/posts/automatic-x11-scaling-with-autorandr-and-dwm/</id>
		<summary type="html">&lt;p&gt;This is a follow-up to &lt;a href=&quot;https:&#x2F;&#x2F;em.0x45.cz&#x2F;posts&#x2F;fractional-display-scaling-on-x11&#x2F;&quot;&gt;my previous post&lt;&#x2F;a&gt; about fractional display scaling. I have done more digging and finally created a working setup for scaling my displays automatically with &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;phillipberndt&#x2F;autorandr&quot;&gt;autorandr&lt;&#x2F;a&gt; and &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;dwm.suckless.org&#x2F;&quot;&gt;dwm&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;</summary>
	</entry>
	<entry xml:lang="en">
		<title>Connecting Kodi to Nginx media index</title>
		<published>2022-10-19T00:00:00+00:00</published>
		<updated>2022-10-19T00:00:00+00:00</updated>
		<link href="https://em.0x45.cz/posts/connecting-kodi-to-nginx-media-index/" type="text/html"/>
		<id>https://em.0x45.cz/posts/connecting-kodi-to-nginx-media-index/</id>
		<summary type="html">&lt;p&gt;Connecting Kodi to network media storage can be cumbersome to setup, especially with NFS. This setup uses simple HTTP and Nginx instead.&lt;&#x2F;p&gt;</summary>
	</entry>
	<entry xml:lang="en">
		<title>Zola website deployment with Drone CI</title>
		<published>2022-09-28T00:00:00+00:00</published>
		<updated>2022-09-28T00:00:00+00:00</updated>
		<link href="https://em.0x45.cz/posts/zola-website-deployment-with-drone-ci/" type="text/html"/>
		<id>https://em.0x45.cz/posts/zola-website-deployment-with-drone-ci/</id>
		<summary type="html">&lt;p&gt;NOTE: This article is outdated and superseded by &lt;a href=&quot;https:&#x2F;&#x2F;em.0x45.cz&#x2F;posts&#x2F;zola-deployment-with-gitea-actions-and-rsync&#x2F;&quot;&gt;native Gitea Actions&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Zola is my SSG of choice, as it it fast, powerful and packed in a single statically linked binary. Here is how I use with in conjunction with Drone CI for automatic building and deployment to my webserver.&lt;&#x2F;p&gt;</summary>
	</entry>
	<entry xml:lang="en">
		<title>Transcoding your music library with acxi</title>
		<published>2022-09-27T00:00:00+00:00</published>
		<updated>2022-09-27T00:00:00+00:00</updated>
		<link href="https://em.0x45.cz/posts/transcoding-your-music-library-with-acxi/" type="text/html"/>
		<id>https://em.0x45.cz/posts/transcoding-your-music-library-with-acxi/</id>
		<summary type="html">&lt;p&gt;Managing a music library is easy with tools such as &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;picard.musicbrainz.org&#x2F;&quot;&gt;Picard&lt;&#x2F;a&gt; from MusicBrainz, but here is how I transcode and sync my FLAC library by using &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;smxi&#x2F;acxi&quot;&gt;acxi&lt;&#x2F;a&gt;, a powerful audio processing tool.&lt;&#x2F;p&gt;</summary>
	</entry>
	<entry xml:lang="en">
		<title>How we hacked the school voice announcement system</title>
		<published>2022-04-19T00:00:00+00:00</published>
		<updated>2022-04-19T00:00:00+00:00</updated>
		<link href="https://em.0x45.cz/posts/how-we-hacked-the-school-voice-anouncement-system/" type="text/html"/>
		<id>https://em.0x45.cz/posts/how-we-hacked-the-school-voice-anouncement-system/</id>
		<summary type="html">&lt;p&gt;Me and some of my students have been spending free time in one of our classrooms, as we usually do, and we started thinking about hacking the ancient school voice announcement system – injecting a custom signal and playing our own audio throughout the whole building.&lt;&#x2F;p&gt;</summary>
	</entry>
	<entry xml:lang="en">
		<title>Taking screenshots with shotgun and slop</title>
		<published>2022-03-10T00:00:00+00:00</published>
		<updated>2022-03-10T00:00:00+00:00</updated>
		<link href="https://em.0x45.cz/posts/taking-screenshots-with-shotgun-and-slop/" type="text/html"/>
		<id>https://em.0x45.cz/posts/taking-screenshots-with-shotgun-and-slop/</id>
		<summary type="html">&lt;p&gt;I have been having problems with &lt;em&gt;scrot&lt;&#x2F;em&gt; and its &lt;code&gt;-c&lt;&#x2F;code&gt; option for selecting a part of the screen. It glitched most of the time and rendered selection borders in the screenshot itself. I have decided to switch to something new – &lt;a rel=&quot;noopener nofollow noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;neXromancers&#x2F;shotgun&quot;&gt;shotgun&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;</summary>
	</entry>
	<entry xml:lang="en">
		<title>Hacking a smart Philips lightbulb</title>
		<published>2021-12-29T00:00:00+00:00</published>
		<updated>2021-12-29T00:00:00+00:00</updated>
		<link href="https://em.0x45.cz/posts/hacking-a-smart-philips-lightbulb/" type="text/html"/>
		<id>https://em.0x45.cz/posts/hacking-a-smart-philips-lightbulb/</id>
		<summary type="html">&lt;p&gt;I got my hands on a Xiaomi Philips smart LED lightbulb (ESP8266) and my goal was to hack it, install custom firmware and effectively get rid of the Xiaomi botnet.&lt;&#x2F;p&gt;</summary>
	</entry>
	<entry xml:lang="en">
		<title>Fractional display scaling on X11</title>
		<published>2021-12-27T00:00:00+00:00</published>
		<updated>2021-12-27T00:00:00+00:00</updated>
		<link href="https://em.0x45.cz/posts/fractional-display-scaling-on-x11/" type="text/html"/>
		<id>https://em.0x45.cz/posts/fractional-display-scaling-on-x11/</id>
		<summary type="html">&lt;p&gt;X11 supports fractional scaling perfectly well, but most GUI toolkits don’t implement it properly. Scaling works fine in a pure QT environment, but when using other GUI toolkits (such as GTK+), things don’t work as expected due to them being poorly written. This article describes several methods of universal mixed display scaling with broken GUI toolkits and a simple window manager (dwm).&lt;&#x2F;p&gt;</summary>
	</entry>
	<entry xml:lang="en">
		<title>Fixing middle trackpoint button</title>
		<published>2019-08-26T00:00:00+00:00</published>
		<updated>2019-08-26T00:00:00+00:00</updated>
		<link href="https://em.0x45.cz/posts/fixing-middle-trackpoint-button/" type="text/html"/>
		<id>https://em.0x45.cz/posts/fixing-middle-trackpoint-button/</id>
		<summary type="html">&lt;p&gt;You might have attempted to &lt;a href=&quot;https:&#x2F;&#x2F;em.0x45.cz&#x2F;posts&#x2F;classic-keyboard&#x2F;&quot;&gt;replace the keyboard on your T430&lt;&#x2F;a&gt; and you broke the middle trackpoint button. Well, here is how to fix it.&lt;&#x2F;p&gt;</summary>
	</entry>
	<entry xml:lang="en">
		<title>Classic keyboard mod</title>
		<published>2019-08-25T00:00:00+00:00</published>
		<updated>2019-08-25T00:00:00+00:00</updated>
		<link href="https://em.0x45.cz/posts/classic-keyboard/" type="text/html"/>
		<id>https://em.0x45.cz/posts/classic-keyboard/</id>
		<summary type="html">&lt;p&gt;Starting with the 30 series, ThinkPads got a new modernized keyboard and many poeple dislike it. Do not take me wrong, it is not a bad keyboard, but when compared to the older model, it has a plethora of issues. Luckily, it can be replaced with the classic 10–20 series keyboard.&lt;&#x2F;p&gt;</summary>
	</entry>
</feed>
