<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<title>Kulolo Tech Log</title>
	<subtitle>Notes on systems, networking, and software engineering.</subtitle>
	<link rel="self" type="application/atom+xml" href="https://blog.051991.xyz/feed.xml"/>
  <link rel="alternate" type="text/html" href="https://blog.051991.xyz"/>
  
	<updated>2026-11-02T00:00:00+00:00</updated>
	
	<id>https://blog.051991.xyz/feed.xml</id>
	<entry xml:lang="en">
		<title>Principles of Resilient Self-Hosting on Linux</title>
		<published>2026-11-02T00:00:00+00:00</published>
		<updated>2026-11-02T00:00:00+00:00</updated>
		<link rel="alternate" type="text/html" href="https://blog.051991.xyz/posts/self-hosting-resilient-services/"/>
		<id>https://blog.051991.xyz/posts/self-hosting-resilient-services/</id>
    
		<content type="html" xml:base="https://blog.051991.xyz/posts/self-hosting-resilient-services/">&lt;p&gt;Self-hosting critical personal infrastructure requires treating your VPS like production:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Graceful Reloads&lt;/strong&gt;: Web servers like Caddy and Nginx support atomic configuration validation and smooth reload signals (&lt;code&gt;systemctl reload&lt;/code&gt;) without dropping in-flight TCP streams.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deterministic Renewals&lt;/strong&gt;: ACME certificates must have automated post-renewal hooks that concatenate extended trust anchors and notify dependent reverse proxies.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Principle of Least Privilege&lt;/strong&gt;: Sensitive administrative endpoints should bind strictly to &lt;code&gt;127.0.0.1&lt;/code&gt; and rely on SSH port forwarding or reverse proxy authentication rather than public internet exposure.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Keeping systems minimal, auditable, and automated ensures high uptime with zero routine maintenance overhead.&lt;/p&gt;
</content>
	</entry>
	<entry xml:lang="en">
		<title>Demystifying Zero-Copy I/O and Modern TLS Tuning</title>
		<published>2026-10-29T00:00:00+00:00</published>
		<updated>2026-10-29T00:00:00+00:00</updated>
		<link rel="alternate" type="text/html" href="https://blog.051991.xyz/posts/zero-copy-and-tls-optimization/"/>
		<id>https://blog.051991.xyz/posts/zero-copy-and-tls-optimization/</id>
    
		<content type="html" xml:base="https://blog.051991.xyz/posts/zero-copy-and-tls-optimization/">&lt;p&gt;High-throughput network services often spend disproportionate CPU cycles copying buffers between kernel space and user space.&lt;/p&gt;
&lt;h3 id=&quot;the-splice-and-sendfile-primitives&quot;&gt;The Splice and Sendfile Primitives&lt;a class=&quot;zola-anchor&quot; href=&quot;#the-splice-and-sendfile-primitives&quot; aria-label=&quot;Anchor link for: the-splice-and-sendfile-primitives&quot; style=&quot;visibility: hidden;&quot;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;By leveraging &lt;code&gt;splice(2)&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;c&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-10&quot;&gt;ssize_t&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-7&quot;&gt; splice&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-10&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-12&quot;&gt; fd_in&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-1 z-d-4&quot;&gt; loff_t&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-10&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-12&quot;&gt;off_in&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-10&quot;&gt; int&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-12&quot;&gt; fd_out&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-1 z-d-4&quot;&gt;               loff_t&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-10&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-12&quot;&gt;off_out&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-10&quot;&gt; size_t&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-12&quot;&gt; len&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-10&quot;&gt; unsigned&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-10&quot;&gt; int&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-12&quot;&gt; flags&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Data flows directly between pipe buffers and socket descriptors without crossing the kernel-user memory boundary.&lt;/p&gt;
&lt;h3 id=&quot;tls-handshake-padding-and-post-quantum-extensions&quot;&gt;TLS Handshake Padding and Post-Quantum Extensions&lt;a class=&quot;zola-anchor&quot; href=&quot;#tls-handshake-padding-and-post-quantum-extensions&quot; aria-label=&quot;Anchor link for: tls-handshake-padding-and-post-quantum-extensions&quot; style=&quot;visibility: hidden;&quot;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;With post-quantum key exchange algorithms like ML-DSA-65 and Kyber gaining adoption, TLS handshake record sizes increase substantially. Ensuring that certificate chains and padding calculations provide sufficient headroom prevents subtle MTU fragmentation issues across heterogeneous network links.&lt;/p&gt;
</content>
	</entry>
	<entry xml:lang="en">
		<title>Why Zola is the Best Choice for Static Blogs in 2026</title>
		<published>2026-10-18T00:00:00+00:00</published>
		<updated>2026-10-18T00:00:00+00:00</updated>
		<link rel="alternate" type="text/html" href="https://blog.051991.xyz/posts/modern-static-site-architecture/"/>
		<id>https://blog.051991.xyz/posts/modern-static-site-architecture/</id>
    
		<content type="html" xml:base="https://blog.051991.xyz/posts/modern-static-site-architecture/">&lt;p&gt;Static site generators (SSGs) have evolved significantly over the last decade. From Jekyll to Hugo, and now to Rust-powered engines like &lt;strong&gt;Zola&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&quot;why-zola&quot;&gt;Why Zola?&lt;a class=&quot;zola-anchor&quot; href=&quot;#why-zola&quot; aria-label=&quot;Anchor link for: why-zola&quot; style=&quot;visibility: hidden;&quot;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Single Binary Simplicity&lt;/strong&gt;: Unlike Node-based generators that pull in gigabytes of &lt;code&gt;node_modules&lt;/code&gt;, Zola is distributed as a single static binary.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tera Templating&lt;/strong&gt;: Tera borrows the best design patterns from Jinja2 and Django templates, making layout inheritance clean and intuitive.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built-in Sass Compilation&lt;/strong&gt;: No need for external Webpack, Gulp, or Sass compilers. Zola compiles Sass stylesheets natively in milliseconds.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Extreme Build Speeds&lt;/strong&gt;: Building hundreds of pages takes under 50ms, enabling instantaneous feedback loops.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;toml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-5 z-d-3&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-3&quot;&gt; zola.toml configuration snippet&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;compile_sass&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-1 z-d-4&quot;&gt; true&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;minify_html&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-1 z-d-4&quot;&gt; false&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;build_search_index&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-1 z-d-4&quot;&gt; false&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For engineers seeking minimal maintenance burden and bulletproof security, pairing Zola with a lightweight web server is hard to beat.&lt;/p&gt;
</content>
	</entry>
</feed>
