<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <generator uri="https://gohugo.io/" version="0.165.0">Hugo</generator>
    <title>K.Feng&#39;s Notes</title>
        <subtitle>Blog about my favorite topics</subtitle>
            <link href="http://localhost:1313/" rel="alternate" type="text/html" title="html" />
            <link href="http://localhost:1313/feed.xml" rel="self" type="application/atom+xml" title="atom" />
    <updated>2026-09-04T02:22:57+08:00</updated>
    <id>http://localhost:1313/</id>
        <entry>
            <title>Start Here: What This Blog Is About</title>
            <link href="http://localhost:1313/posts/start-here/" rel="alternate" type="text/html"  hreflang="en" />
            <id>http://localhost:1313/posts/start-here/</id>
            <published>2026-08-20T09:00:00+08:00</published>
            <updated>2026-09-04T01:20:40+08:00</updated>
            <content type="html">
                &lt;p&gt;Welcome! This post is &lt;strong&gt;pinned&lt;/strong&gt; so it stays at the top of the list no matter
how many newer posts come after it.&lt;/p&gt;
&lt;div class=&#34;flex align-center gblog-post__anchorwrap&#34;&gt;
    &lt;h2 id=&#34;what-you-will-find-here&#34;
    &gt;
        What you will find here
    &lt;/h2&gt;
    &lt;a data-clipboard-text=&#34;http://localhost:1313/posts/start-here/#what-you-will-find-here&#34; class=&#34;gblog-post__anchor clip flex align-center&#34; aria-label=&#34;Anchor What you will find here&#34; href=&#34;#what-you-will-find-here&#34;&gt;
        &lt;svg class=&#34;gblog-icon gblog_link&#34;&gt;&lt;use xlink:href=&#34;#gblog_link&#34;&gt;&lt;/use&gt;&lt;/svg&gt;
    &lt;/a&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Notes about Linux, tooling, and open source&lt;/li&gt;
&lt;li&gt;Small solutions to problems I ran into myself&lt;/li&gt;
&lt;li&gt;Occasional book and paper reading notes&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;The best time to start a blog was ten years ago. The second best time is today.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you are new here, this is the place to begin.&lt;/p&gt;

            </content>   
                                <category scheme="http://localhost:1313/tags/meta" term="meta" label="meta" />
        </entry>
        <entry>
            <title>First Post</title>
            <link href="http://localhost:1313/posts/first-post/" rel="alternate" type="text/html"  hreflang="en" />
            <id>http://localhost:1313/posts/first-post/</id>
            <published>2026-09-04T00:27:32+08:00</published>
            <updated>2026-09-04T01:09:31+08:00</updated>
            <content type="html">
                &lt;p&gt;fasdfadsf&lt;/p&gt;

            </content>  
        </entry>
        <entry>
            <title>Self-Hosting Ideas for a Spare Raspberry Pi</title>
            <link href="http://localhost:1313/notes/self-hosting-ideas/" rel="alternate" type="text/html"  hreflang="en" />
            <id>http://localhost:1313/notes/self-hosting-ideas/</id>
            <published>2026-09-03T22:10:00+08:00</published>
            <updated>2026-09-04T01:20:40+08:00</updated>
            <content type="html">
                &lt;p&gt;A running list of services that earn their RAM on a small home server.&lt;/p&gt;
&lt;div class=&#34;flex align-center gblog-post__anchorwrap&#34;&gt;
    &lt;h2 id=&#34;proven&#34;
    &gt;
        Proven
    &lt;/h2&gt;
    &lt;a data-clipboard-text=&#34;http://localhost:1313/notes/self-hosting-ideas/#proven&#34; class=&#34;gblog-post__anchor clip flex align-center&#34; aria-label=&#34;Anchor Proven&#34; href=&#34;#proven&#34;&gt;
        &lt;svg class=&#34;gblog-icon gblog_link&#34;&gt;&lt;use xlink:href=&#34;#gblog_link&#34;&gt;&lt;/use&gt;&lt;/svg&gt;
    &lt;/a&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Uptime Kuma&lt;/strong&gt; — lightweight status monitoring with a nice UI&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Syncthing&lt;/strong&gt; — folder sync without a cloud middleman&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pi-hole&lt;/strong&gt; — network-wide ad blocking&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;flex align-center gblog-post__anchorwrap&#34;&gt;
    &lt;h2 id=&#34;on-the-shortlist&#34;
    &gt;
        On the shortlist
    &lt;/h2&gt;
    &lt;a data-clipboard-text=&#34;http://localhost:1313/notes/self-hosting-ideas/#on-the-shortlist&#34; class=&#34;gblog-post__anchor clip flex align-center&#34; aria-label=&#34;Anchor On the shortlist&#34; href=&#34;#on-the-shortlist&#34;&gt;
        &lt;svg class=&#34;gblog-icon gblog_link&#34;&gt;&lt;use xlink:href=&#34;#gblog_link&#34;&gt;&lt;/use&gt;&lt;/svg&gt;
    &lt;/a&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Immich&lt;/strong&gt; — self-hosted photos, the current favorite to replace cloud albums&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Paperless-ngx&lt;/strong&gt; — scan once, find forever&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;flex align-center gblog-post__anchorwrap&#34;&gt;
    &lt;h2 id=&#34;retired&#34;
    &gt;
        Retired
    &lt;/h2&gt;
    &lt;a data-clipboard-text=&#34;http://localhost:1313/notes/self-hosting-ideas/#retired&#34; class=&#34;gblog-post__anchor clip flex align-center&#34; aria-label=&#34;Anchor Retired&#34; href=&#34;#retired&#34;&gt;
        &lt;svg class=&#34;gblog-icon gblog_link&#34;&gt;&lt;use xlink:href=&#34;#gblog_link&#34;&gt;&lt;/use&gt;&lt;/svg&gt;
    &lt;/a&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;A full Nextcloud instance. It worked, but I only ever used two features.&lt;/li&gt;
&lt;/ul&gt;

            </content>   
                                <category scheme="http://localhost:1313/tags/self-hosting" term="self-hosting" label="self-hosting" />
        </entry>
        <entry>
            <title>Sane Local Backups with restic</title>
            <link href="http://localhost:1313/posts/restic-backups/" rel="alternate" type="text/html"  hreflang="en" />
            <id>http://localhost:1313/posts/restic-backups/</id>
            <published>2026-09-03T19:45:00+08:00</published>
            <updated>2026-09-04T01:20:40+08:00</updated>
            <content type="html">
                &lt;p&gt;After years of ad-hoc &lt;code&gt;rsync&lt;/code&gt; scripts, I finally settled on &lt;code&gt;restic&lt;/code&gt; for
local snapshots. Initialize a repository once:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;restic init --repo /mnt/backup/restic
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then back up your home directory, excluding the usual noise:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;restic -r /mnt/backup/restic backup ~ &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --exclude ~/.cache &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --exclude ~/Downloads
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Check what snapshots exist and prune old ones:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;restic -r /mnt/backup/restic snapshots
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;restic -r /mnt/backup/restic forget --keep-daily &lt;span class=&#34;m&#34;&gt;7&lt;/span&gt; --keep-weekly &lt;span class=&#34;m&#34;&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The part that convinced me: restores are first-class, not an afterthought.&lt;/p&gt;

            </content>   
                                <category scheme="http://localhost:1313/tags/linux" term="linux" label="linux" /> 
                                <category scheme="http://localhost:1313/tags/backup" term="backup" label="backup" />
        </entry>
        <entry>
            <title>Reading List, September 2026</title>
            <link href="http://localhost:1313/posts/reading-list-2026/" rel="alternate" type="text/html"  hreflang="en" />
            <id>http://localhost:1313/posts/reading-list-2026/</id>
            <published>2026-09-02T21:15:00+08:00</published>
            <updated>2026-09-04T01:20:40+08:00</updated>
            <content type="html">
                &lt;p&gt;Things I finished or abandoned this month.&lt;/p&gt;
&lt;div class=&#34;flex align-center gblog-post__anchorwrap&#34;&gt;
    &lt;h2 id=&#34;finished&#34;
    &gt;
        Finished
    &lt;/h2&gt;
    &lt;a data-clipboard-text=&#34;http://localhost:1313/posts/reading-list-2026/#finished&#34; class=&#34;gblog-post__anchor clip flex align-center&#34; aria-label=&#34;Anchor Finished&#34; href=&#34;#finished&#34;&gt;
        &lt;svg class=&#34;gblog-icon gblog_link&#34;&gt;&lt;use xlink:href=&#34;#gblog_link&#34;&gt;&lt;/use&gt;&lt;/svg&gt;
    &lt;/a&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;The Pragmatic Programmer&lt;/em&gt; (20th anniversary edition) — still holds up&lt;/li&gt;
&lt;li&gt;&lt;em&gt;A Philosophy of Software Design&lt;/em&gt; — the best short explanation of deep vs. shallow modules I know&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;flex align-center gblog-post__anchorwrap&#34;&gt;
    &lt;h2 id=&#34;in-progress&#34;
    &gt;
        In progress
    &lt;/h2&gt;
    &lt;a data-clipboard-text=&#34;http://localhost:1313/posts/reading-list-2026/#in-progress&#34; class=&#34;gblog-post__anchor clip flex align-center&#34; aria-label=&#34;Anchor In progress&#34; href=&#34;#in-progress&#34;&gt;
        &lt;svg class=&#34;gblog-icon gblog_link&#34;&gt;&lt;use xlink:href=&#34;#gblog_link&#34;&gt;&lt;/use&gt;&lt;/svg&gt;
    &lt;/a&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Thinking in Systems&lt;/em&gt; — slower going, but worth it&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;flex align-center gblog-post__anchorwrap&#34;&gt;
    &lt;h2 id=&#34;abandoned-without-guilt&#34;
    &gt;
        Abandoned without guilt
    &lt;/h2&gt;
    &lt;a data-clipboard-text=&#34;http://localhost:1313/posts/reading-list-2026/#abandoned-without-guilt&#34; class=&#34;gblog-post__anchor clip flex align-center&#34; aria-label=&#34;Anchor Abandoned without guilt&#34; href=&#34;#abandoned-without-guilt&#34;&gt;
        &lt;svg class=&#34;gblog-icon gblog_link&#34;&gt;&lt;use xlink:href=&#34;#gblog_link&#34;&gt;&lt;/use&gt;&lt;/svg&gt;
    &lt;/a&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;A 600-page Kubernetes certification guide. Life is too short for bad diagrams.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Reading lists are mostly a promise to your future self.&lt;/p&gt;
&lt;/blockquote&gt;

            </content>   
                                <category scheme="http://localhost:1313/tags/reading" term="reading" label="reading" />
        </entry>
        <entry>
            <title>Hugo Cheatsheet for This Site</title>
            <link href="http://localhost:1313/notes/hugo-cheatsheet/" rel="alternate" type="text/html"  hreflang="en" />
            <id>http://localhost:1313/notes/hugo-cheatsheet/</id>
            <published>2026-09-02T08:00:00+08:00</published>
            <updated>2026-09-04T01:20:40+08:00</updated>
            <content type="html">
                &lt;p&gt;Quick reference for the commands and file layout I keep forgetting.&lt;/p&gt;
&lt;div class=&#34;flex align-center gblog-post__anchorwrap&#34;&gt;
    &lt;h2 id=&#34;commands&#34;
    &gt;
        Commands
    &lt;/h2&gt;
    &lt;a data-clipboard-text=&#34;http://localhost:1313/notes/hugo-cheatsheet/#commands&#34; class=&#34;gblog-post__anchor clip flex align-center&#34; aria-label=&#34;Anchor Commands&#34; href=&#34;#commands&#34;&gt;
        &lt;svg class=&#34;gblog-icon gblog_link&#34;&gt;&lt;use xlink:href=&#34;#gblog_link&#34;&gt;&lt;/use&gt;&lt;/svg&gt;
    &lt;/a&gt;
&lt;/div&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hugo server -D      &lt;span class=&#34;c1&#34;&gt;# dev server, include drafts&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hugo --gc           &lt;span class=&#34;c1&#34;&gt;# production build into public/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;flex align-center gblog-post__anchorwrap&#34;&gt;
    &lt;h2 id=&#34;where-things-live&#34;
    &gt;
        Where things live
    &lt;/h2&gt;
    &lt;a data-clipboard-text=&#34;http://localhost:1313/notes/hugo-cheatsheet/#where-things-live&#34; class=&#34;gblog-post__anchor clip flex align-center&#34; aria-label=&#34;Anchor Where things live&#34; href=&#34;#where-things-live&#34;&gt;
        &lt;svg class=&#34;gblog-icon gblog_link&#34;&gt;&lt;use xlink:href=&#34;#gblog_link&#34;&gt;&lt;/use&gt;&lt;/svg&gt;
    &lt;/a&gt;
&lt;/div&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Path&lt;/th&gt;
					&lt;th&gt;Purpose&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;content/posts/&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;blog posts&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;content/notes/&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;reference notes&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;data/menu/extra.yaml&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;header/footer menu entries&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;themes/hugo-geekblog/&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;theme (git submodule)&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class=&#34;flex align-center gblog-post__anchorwrap&#34;&gt;
    &lt;h2 id=&#34;remember&#34;
    &gt;
        Remember
    &lt;/h2&gt;
    &lt;a data-clipboard-text=&#34;http://localhost:1313/notes/hugo-cheatsheet/#remember&#34; class=&#34;gblog-post__anchor clip flex align-center&#34; aria-label=&#34;Anchor Remember&#34; href=&#34;#remember&#34;&gt;
        &lt;svg class=&#34;gblog-icon gblog_link&#34;&gt;&lt;use xlink:href=&#34;#gblog_link&#34;&gt;&lt;/use&gt;&lt;/svg&gt;
    &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;The theme must be built once after a fresh clone:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; themes/hugo-geekblog &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm install &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm run build
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
            </content>   
                                <category scheme="http://localhost:1313/tags/hugo" term="hugo" label="hugo" />
        </entry>
        <entry>
            <title>Five Terminal Tips I Use Every Day</title>
            <link href="http://localhost:1313/posts/terminal-tips/" rel="alternate" type="text/html"  hreflang="en" />
            <id>http://localhost:1313/posts/terminal-tips/</id>
            <published>2026-09-01T10:30:00+08:00</published>
            <updated>2026-09-04T01:20:40+08:00</updated>
            <content type="html">
                &lt;p&gt;Small habits that compound over time:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Jump back to the previous directory&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; /var/log
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ~/projects
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; -    &lt;span class=&#34;c1&#34;&gt;# back to /var/log&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;&lt;strong&gt;Reuse arguments from the previous command&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir -p ~/.local/bin
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; !!:1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Search shell history incrementally&lt;/strong&gt; with &lt;code&gt;Ctrl+R&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fix a long command&lt;/strong&gt; with &lt;code&gt;fc&lt;/code&gt; — it opens the last command in your editor.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Watch a file instead of re-running a command&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;watch -n &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;df -h /&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;None of these are fancy, but together they save real time every day.&lt;/p&gt;

            </content>   
                                <category scheme="http://localhost:1313/tags/linux" term="linux" label="linux" /> 
                                <category scheme="http://localhost:1313/tags/tools" term="tools" label="tools" />
        </entry>
</feed>
