<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title>lch361&#x27;s articles</title>
	<subtitle>From personal experiences to scientific researches, writing about advanced
technnologies and sharing the knowedge with other explorers like me.
</subtitle>
	<link href="https://lch361.net/articles/atom.xml" rel="self" type="application/atom+xml"/>
	<id>https:&#x2F;&#x2F;lch361.net&#x2F;articles&#x2F;atom.xml</id>
	<updated>2026-09-08T14:11:37Z</updated>
	<generator uri="https://getzola.org" version="0.22.1">Zola</generator>
	<author>
		<name>lch361</name>
	</author>
	<rights>Content licensed under CC-BY-ND 4.0.</rights>
	<!-- TODO: icon tag -->
	<entry>
		<title>Protecting Linux servers from accidental connectivity loss</title>
		<updated>2026-09-08T14:11:37Z</updated>
		<author>
			<name>lch361</name>
		</author>
		<id>https:&#x2F;&#x2F;lch361.net&#x2F;articles&#x2F;2026-09-06&#x2F;</id>
		<link rel="alternate" href="https://lch361.net/articles/2026-09-06/" type="text/html"/>
		<published>2026-09-06T00:00:00Z</published>
		<summary>If you maintain Linux servers, you almost always have the ability to login with
SSH, but not always have the luxury to login 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.
</summary>
	</entry>
	<entry>
		<title>Policy based routing with Tailscale</title>
		<updated>2026-09-03T00:00:00Z</updated>
		<author>
			<name>lch361</name>
		</author>
		<id>https:&#x2F;&#x2F;lch361.net&#x2F;articles&#x2F;2026-09-03&#x2F;</id>
		<link rel="alternate" href="https://lch361.net/articles/2026-09-03/" type="text/html"/>
		<published>2026-09-03T00:00:00Z</published>
		<summary>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.
</summary>
	</entry>
	<entry>
		<title>Hosting Linux containers and virtual machines on Raspberry Pi</title>
		<updated>2026-02-21T00:00:00Z</updated>
		<author>
			<name>lch361</name>
		</author>
		<id>https:&#x2F;&#x2F;lch361.net&#x2F;articles&#x2F;2026-02-21&#x2F;</id>
		<link rel="alternate" href="https://lch361.net/articles/2026-02-21/" type="text/html"/>
		<published>2026-02-21T00:00:00Z</published>
		<summary>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.
</summary>
	</entry>
	<entry>
		<title>Dynamic array vs Gap buffer: performance analysis for immediate mode UI</title>
		<updated>2025-06-01T00:00:00Z</updated>
		<author>
			<name>lch361</name>
		</author>
		<id>https:&#x2F;&#x2F;lch361.net&#x2F;articles&#x2F;2025-06-01&#x2F;</id>
		<link rel="alternate" href="https://lch361.net/articles/2025-06-01/" type="text/html"/>
		<published>2025-06-01T00:00:00Z</published>
		<summary>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 most 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.
</summary>
	</entry>
</feed>
