<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
	<channel>
		<title>lch361&#x27;s digital homeworld</title>
		<link>https://www.lch361.net/</link>
		<description>Greetings, user of the internet.
Welcome to my little website,
where I put information about myself and my projects.
</description>
		<generator>Zola 0.22.1</generator>
		<language>en</language>
		<atom:link href="https://www.lch361.net/rss.xml" rel="self" type="application/rss+xml"/>
<item>
	<title>Protecting Linux servers from accidental connectivity loss</title>
	<pubDate>Sun, 06 Sep 2026 00:00:00 +0000</pubDate>
	<link>https://www.lch361.net/articles/2026-09-06/</link>
	<guid>https:&#x2F;&#x2F;www.lch361.net&#x2F;articles&#x2F;2026-09-06&#x2F;</guid>
	<description xml:base="https://www.lch361.net/articles/2026-09-06/">If you maintain Linux servers, you almost always have the ability to log in with
SSH, but not always have the luxury to log in with a local console and keyboard.
In this case, one misconfiguration on a server can cut off your ability to
configure the server permanently.
How to make a Linux server more resistant to your own mistakes? Let&#x27;s find out.
</description>
	<source url="https://www.lch361.net/articles/rss.xml">lch361&#x27;s articles</source>
</item>
<item>
	<title>Policy based routing with Tailscale</title>
	<pubDate>Thu, 03 Sep 2026 00:00:00 +0000</pubDate>
	<link>https://www.lch361.net/articles/2026-09-03/</link>
	<guid>https:&#x2F;&#x2F;www.lch361.net&#x2F;articles&#x2F;2026-09-03&#x2F;</guid>
	<description xml:base="https://www.lch361.net/articles/2026-09-03/">Tailscale is a very simple and convenient VPN software. You can get a control
plane, clients, routes and exit nodes with it in less than an hour without
caring at all about how keys, routing or relays work. But what if you need to
implement a network policy, for which Tailscale doesn&#x27;t have an established
interface? This article presents an example of how to implement PBR, knowing how
Tailscale routing works.
</description>
	<source url="https://www.lch361.net/articles/rss.xml">lch361&#x27;s articles</source>
</item>
<item>
	<title>Hosting Linux containers and virtual machines on Raspberry Pi</title>
	<pubDate>Sat, 21 Feb 2026 00:00:00 +0000</pubDate>
	<link>https://www.lch361.net/articles/2026-02-21/</link>
	<guid>https:&#x2F;&#x2F;www.lch361.net&#x2F;articles&#x2F;2026-02-21&#x2F;</guid>
	<description xml:base="https://www.lch361.net/articles/2026-02-21/">Single-board computers are often used as Linux servers. Raspberry Pi 4, for
example, has enough system resources to run multiple applications in parallel.
Often, these applications are run separately on different VMs or containers, in
order to enhance security and maintainability. This article shows a way to set
up your Raspberry Pi as a Linux container host and a hypervisor.
</description>
	<source url="https://www.lch361.net/articles/rss.xml">lch361&#x27;s articles</source>
</item>
<item>
	<title>Dynamic array vs Gap buffer: performance analysis for immediate mode UI</title>
	<pubDate>Sun, 01 Jun 2025 00:00:00 +0000</pubDate>
	<link>https://www.lch361.net/articles/2025-06-01/</link>
	<guid>https:&#x2F;&#x2F;www.lch361.net&#x2F;articles&#x2F;2025-06-01&#x2F;</guid>
	<description xml:base="https://www.lch361.net/articles/2025-06-01/">Gap buffer is one of the most common data structures used for editing text,
while a dynamic array is the simplest data structure for manipulating a
sequence of elements of arbitrary size.
What is the optimal choice for an application that not only does text
editing, but redraws the entire line on every key press?
In this article, we&#x27;ll find out.
</description>
	<source url="https://www.lch361.net/articles/rss.xml">lch361&#x27;s articles</source>
</item>
<item>
	<title>Infrastructure configuration for lch361.net (WIP)</title>
	<pubDate>Tue, 01 Sep 2026 00:00:00 +0000</pubDate>
	<link>https://www.lch361.net/projects/infrastructure-lch361-net/</link>
	<guid>https:&#x2F;&#x2F;www.lch361.net&#x2F;projects&#x2F;infrastructure-lch361-net&#x2F;</guid>
	<description xml:base="https://www.lch361.net/projects/infrastructure-lch361-net/">Open source recipes to deploy and configure almost everything behind services
running on this server. It allows reproducing my setup starting from bare
network, root-accessed host, hypervisor and storage. Every feature is documented
by architectural decisions described in this page.
</description>
	<source url="https://www.lch361.net/projects/rss.xml">lch361&#x27;s projects</source>
</item>
<item>
	<title>lch361.net</title>
	<pubDate>Mon, 02 Jun 2025 00:00:00 +0000</pubDate>
	<link>https://www.lch361.net/projects/lch361-net/</link>
	<guid>https:&#x2F;&#x2F;www.lch361.net&#x2F;projects&#x2F;lch361-net&#x2F;</guid>
	<description xml:base="https://www.lch361.net/projects/lch361-net/">My personal website that you are watching right now.
A place for my thoughts. A place to tell about my skills, projects and share
information that I, from a developer perspective, find useful and interesting.
</description>
	<source url="https://www.lch361.net/projects/rss.xml">lch361&#x27;s projects</source>
</item>
<item>
	<title>spiral</title>
	<pubDate>Thu, 27 Mar 2025 00:00:00 +0000</pubDate>
	<link>https://www.lch361.net/projects/spiral/</link>
	<guid>https:&#x2F;&#x2F;www.lch361.net&#x2F;projects&#x2F;spiral&#x2F;</guid>
	<description xml:base="https://www.lch361.net/projects/spiral/">General purpose editing of lines in a terminal.
Available as a Zig library, as well as a separate executable.
Intended usage is command-line applications working in a REPL fashion, where
every line could require rich editing.
</description>
	<source url="https://www.lch361.net/projects/rss.xml">lch361&#x27;s projects</source>
</item>
<item>
	<title>lcalc</title>
	<pubDate>Tue, 15 Oct 2024 00:00:00 +0000</pubDate>
	<link>https://www.lch361.net/projects/lcalc/</link>
	<guid>https:&#x2F;&#x2F;www.lch361.net&#x2F;projects&#x2F;lcalc&#x2F;</guid>
	<description xml:base="https://www.lch361.net/projects/lcalc/">A command-line calculator with simple, but modern interface.
Intended usage is interactive, shell-agnostic calculations.
Supports arbitrary precision integer, rational, floating and complex numbers.
It is also my first complete project in Zig programming language.
</description>
	<source url="https://www.lch361.net/projects/rss.xml">lch361&#x27;s projects</source>
</item>
<item>
	<title>STM32 Morse device</title>
	<pubDate>Tue, 20 Aug 2024 00:00:00 +0000</pubDate>
	<link>https://www.lch361.net/projects/stm32-morse-device/</link>
	<guid>https:&#x2F;&#x2F;www.lch361.net&#x2F;projects&#x2F;stm32-morse-device&#x2F;</guid>
	<description xml:base="https://www.lch361.net/projects/stm32-morse-device/">An STM32F103C6T6 microcontroller firmware.
Textual information goes to the USART pins on a microcontroller, while Morse
signal is on one of the digital pins, for example, connected to LED.
Sending ASCII letters through USART will make an LED blink accordingly to the
decoded Morse signal, and otherwise.
It is my first firmware made with Zig programming language, and it serves as
a great example of a simple, interrupt-driven application.
</description>
	<source url="https://www.lch361.net/projects/rss.xml">lch361&#x27;s projects</source>
</item>
<item>
	<title>sdns-json</title>
	<pubDate>Mon, 22 Jul 2024 00:00:00 +0000</pubDate>
	<link>https://www.lch361.net/projects/sdns-json/</link>
	<guid>https:&#x2F;&#x2F;www.lch361.net&#x2F;projects&#x2F;sdns-json&#x2F;</guid>
	<description xml:base="https://www.lch361.net/projects/sdns-json/">A command-line converter of DNSCrypt 2 stamps into JSON, and otherwise.
Provides an intuitive interface and a simple to understand documentation, while
simultaneously conforming to both JSON and DNSCrypt standards.
Many DNSCrypt applications use stamps in their encoded form, but there was no
offline application to configure them in text format.
Also, it is my first complete project in Rust programming language.
</description>
	<source url="https://www.lch361.net/projects/rss.xml">lch361&#x27;s projects</source>
</item>
<item>
	<title>FCDL</title>
	<pubDate>Wed, 03 Jul 2024 00:00:00 +0000</pubDate>
	<link>https://www.lch361.net/projects/fcdl/</link>
	<guid>https:&#x2F;&#x2F;www.lch361.net&#x2F;projects&#x2F;fcdl&#x2F;</guid>
	<description xml:base="https://www.lch361.net/projects/fcdl/">A Linux kernel module written in C.
Creates a special character device that, when being read from, outputs every
created or deleted file on the entire system. It does so by intercepting system
calls.
My first Linux Kernel module ever developed.
Not very practical for use, because Inotify exists.
</description>
	<source url="https://www.lch361.net/projects/rss.xml">lch361&#x27;s projects</source>
</item>
	</channel>
</rss>
