<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>ModuleCycle</title>
        <link>https://matrixcore.top/</link>
        <description>少年辛苦终身事，莫向光阴惰寸功。</description>
        <lastBuildDate>Tue, 07 Apr 2026 16:37:15 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>zh-CN</language>
        <copyright>All rights reserved 2026, ModuleCycle</copyright>
        <item>
            <title><![CDATA[Part I — WebDAV, MinIO, rsync, or Syncthing for VPS File Sync]]></title>
            <link>https://matrixcore.top/article/260407</link>
            <guid>https://matrixcore.top/article/260407</guid>
            <pubDate>Tue, 07 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[This article explores practical ways to sync files between a VPS and local devices for note-taking with Obsidian. Starting from the limitations of Nextcloud WebDAV, it compares WebDAV, MinIO, rsync, and Syncthing to find a solution that best fits a personal knowledge workflow.]]></description>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-33b6ddcd542980928458c461bec517c5"><div class="notion-viewport"></div><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-33b6ddcd542980cc8e97e3d997c1fe91" data-id="33b6ddcd542980cc8e97e3d997c1fe91"><span><div id="33b6ddcd542980cc8e97e3d997c1fe91" class="notion-header-anchor"></div><a class="notion-hash-link" href="#33b6ddcd542980cc8e97e3d997c1fe91" title="1. Introduction"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">1. Introduction</span></span></h2><hr class="notion-hr notion-block-33b6ddcd54298078b697d57d8a7d8f96"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-33b6ddcd542980ffa3a9f0e6dcc7ee27" data-id="33b6ddcd542980ffa3a9f0e6dcc7ee27"><span><div id="33b6ddcd542980ffa3a9f0e6dcc7ee27" class="notion-header-anchor"></div><a class="notion-hash-link" href="#33b6ddcd542980ffa3a9f0e6dcc7ee27" title="1.1 Why I needed sync between a VPS and my local device"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">1.1 Why I needed sync between a VPS and my local device</span></span></h3><hr class="notion-hr notion-block-33b6ddcd542980c5bc62f2efe4daff19"/><div class="notion-text notion-block-33b6ddcd542980f398bdd4d988d8ba33">I often find myself living in at least two different worlds. One is the place where I read, test, deploy, and solve problems on my VPS. The other is my local space, where I think more slowly, write notes, and try to turn scattered ideas into something meaningful. Knowledge usually appears in small sparks across these different scenes. If I do not catch them in time, they fade very quickly.</div><div class="notion-text notion-block-33b6ddcd54298015b69cdc42064bfe79">In the end, I chose Obsidian as a bridge between these fragments. It gives me one place to collect commands, mistakes, ideas, and small conclusions. But collecting is not enough. If I do not review what I wrote, I forget it surprisingly fast. That is why syncing matters to me. I want these notes to move with me, from server to laptop, from one device to another, so I can return to them whenever I need.</div><div class="notion-text notion-block-33b6ddcd54298040a3d2c3e7db551a3e">There is also a deeper reason. I have a simple dream: to spend more time linking my knowledge together. Not just storing it, but connecting it, refining it, and making it available anywhere and anytime. A good sync tool is not only about convenience. For me, it is part of building a personal knowledge system that I can truly rely on.</div><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-33b6ddcd54298028baa0c9e2d1542d78" data-id="33b6ddcd54298028baa0c9e2d1542d78"><span><div id="33b6ddcd54298028baa0c9e2d1542d78" class="notion-header-anchor"></div><a class="notion-hash-link" href="#33b6ddcd54298028baa0c9e2d1542d78" title="1.2 The real problem: not just “can it sync”, but “which tool fits my workflow”"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">1.2 The real problem: not just “can it sync”, but “which tool fits my workflow”</span></span></h3><hr class="notion-hr notion-block-33b6ddcd542980d0b090f7404a37d335"/><div class="notion-text notion-block-33b6ddcd542980e48c8de83e3f5c614f">At first, I used Nextcloud WebDAV to manage my files. For a while, it seemed good enough, especially because I relied on the Obsidian Remote Save plugin to keep my notes connected across devices. It looked like I had already found the bridge I wanted.</div><div class="notion-text notion-block-33b6ddcd542980068e61df8591a7a40e">But after using it for some time, the real problems started to appear. When I needed to sync a large number of files between two devices, WebDAV often became slow and frustrating. Nextcloud itself also brought extra pressure: frequent updates, ongoing maintenance, and the feeling that I was spending too much time taking care of the tool instead of using it.</div><div class="notion-text notion-block-33b6ddcd542980119939ea4966487bdd">That was the moment when I realized the real question was not simply whether a tool could sync files. Many tools can do that. The more important question was whether a tool truly fit my workflow. I did not just want something that worked in theory. I wanted something light, stable, and easy to maintain over time.</div><div class="notion-text notion-block-33b6ddcd5429801d8c44e43466fdbfed">So I asked AI for ideas. It suggested several other options, including S3-compatible storage and Google Drive. Those alternatives immediately caught my attention. They felt different from the traditional WebDAV path I had already known, and that curiosity pushed me to start exploring a wider range of solutions.</div><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-33b6ddcd542980c6b575f0dccf129cc4" data-id="33b6ddcd542980c6b575f0dccf129cc4"><span><div id="33b6ddcd542980c6b575f0dccf129cc4" class="notion-header-anchor"></div><a class="notion-hash-link" href="#33b6ddcd542980c6b575f0dccf129cc4" title="1.3 My two main directions:"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">1.3 My two main directions:</span></span></h3><hr class="notion-hr notion-block-33b6ddcd54298030849dd28e43f6cbe8"/><div class="notion-text notion-block-33b6ddcd542980709706c23b64a657e4">After that, I found myself moving in two different directions.</div><div class="notion-text notion-block-33b6ddcd542980e38d61f048c4fc132f">The first direction was still centered on the file-service model I already knew. Instead of continuing with Nextcloud, I started looking for a lighter and more stable replacement for WebDAV. At the same time, I also began to consider whether I should step away from WebDAV itself and try more direct tools such as SFTP, rsync, or rclone.</div><div class="notion-text notion-block-33b6ddcd5429805988f7c4bb0d6e88da">The second direction was quite different. Rather than thinking in terms of folders, mounting, and file services, I began looking at object-storage-style solutions. This was a new path for me, and it felt more modern, especially because many sync tools seem to work better with S3-compatible storage.</div><div class="notion-text notion-block-33b6ddcd54298085a496ecfa8054842d">Based on AI’s recommendations, MinIO quickly stood out. It looked like an interesting bridge between self-hosting and the S3 ecosystem, so I knew I would want to try it soon.</div><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-33b6ddcd5429808aab9bf7f2e280749f" data-id="33b6ddcd5429808aab9bf7f2e280749f"><span><div id="33b6ddcd5429808aab9bf7f2e280749f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#33b6ddcd5429808aab9bf7f2e280749f" title="1.4 Temporary conclusion"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">1.4 Temporary conclusion</span></span></h2><hr class="notion-hr notion-block-33b6ddcd54298023b4e3dcc306c4a69e"/><div class="notion-text notion-block-33b6ddcd5429809599c1c2981db1c843">At this stage, I have not reached a final answer yet, but the direction is becoming clearer. What began as a simple need for syncing notes between my VPS and local device gradually turned into a broader reflection on workflow, maintenance cost, and long-term reliability. I realized that the problem is not just about finding a tool that can move files, but about choosing one that fits the way I actually work.</div><div class="notion-text notion-block-33b6ddcd54298070a962df92484ef9a3">For now, I have narrowed my exploration to two main paths: traditional file-based solutions such as WebDAV, SFTP, rsync, or rclone, and object-storage-based solutions such as S3-compatible services, especially MinIO. Each path seems to represent a different philosophy of managing data, and I want to understand not only how they work, but also how they feel in daily use.</div><div class="notion-text notion-block-33b6ddcd542980ec8143d23096eaedf7">I do not have the full conclusion yet, but at least the question is now more precise than before. That already feels like progress. Tomorrow, I will continue by testing these options more carefully and comparing which one is truly the best fit for my personal knowledge workflow.</div></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[
[DevTools] Modular Knowledge Management with Git Sparse-Checkout and Obsidian Git Integration]]></title>
            <link>https://matrixcore.top/article/sparse-checkout-obsidian</link>
            <guid>https://matrixcore.top/article/sparse-checkout-obsidian</guid>
            <pubDate>Mon, 15 Sep 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[By leveraging Git's sparse-checkout (in non-cone mode), submodules, and Obsidian Git integration, we can build a streamlined and efficient knowledge management workflow. This setup not only reduces unnecessary clutter in local environments but also ensures version-controlled, automated, and scalable updates across platforms like GitHub and Vercel. Whether managing historical knowledge, creating new content, or organizing workspaces, this approach provides a solid foundation for maintaining a clean and productive knowledge ecosystem.]]></description>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-26f6ddcd542980cb8deaf6287450c8dd"><div class="notion-viewport"></div><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-26f6ddcd542980dda838dc6acbbc1fe8" data-id="26f6ddcd542980dda838dc6acbbc1fe8"><span><div id="26f6ddcd542980dda838dc6acbbc1fe8" class="notion-header-anchor"></div><a class="notion-hash-link" href="#26f6ddcd542980dda838dc6acbbc1fe8" title="🏗️Background"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">🏗️Background</span></span></h2><hr class="notion-hr notion-block-26f6ddcd5429807d9402ee1fccd5d01f"/><div class="notion-text notion-block-26f6ddcd5429804588aec68fc4fd58c2">We plan to establish three different types of databases to handle knowledge environments in different scenarios:</div><ul class="notion-list notion-list-disc notion-block-26f6ddcd5429806d8bc3d22373055f45"><li>The <b>standard database</b>, named <code class="notion-inline-code">standard-db</code>, is used to record and revise historical experiences and knowledge conclusions.</li></ul><ul class="notion-list notion-list-disc notion-block-26f6ddcd5429806082a4d4542b9ad8a4"><li>The <b>creative database</b>, named <code class="notion-inline-code">creative-db</code>, is used for creating standardized NotionNext documents such as blogs and tutorials.</li></ul><ul class="notion-list notion-list-disc notion-block-26f6ddcd54298064bc26c0a3150ab9a1"><li>The <b>workspace database</b>, named <code class="notion-inline-code">workspace-db</code>, is used for managing work tasks and knowledge learning.</li></ul><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-26f6ddcd54298014951fdbaee6770b6c" data-id="26f6ddcd54298014951fdbaee6770b6c"><span><div id="26f6ddcd54298014951fdbaee6770b6c" class="notion-header-anchor"></div><a class="notion-hash-link" href="#26f6ddcd54298014951fdbaee6770b6c" title="🧱Main Content"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">🧱Main Content</span></span></h2><hr class="notion-hr notion-block-26f6ddcd54298037bf80e037ee424630"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-26f6ddcd5429801c8ca0ff1aca7c31f1" data-id="26f6ddcd5429801c8ca0ff1aca7c31f1"><span><div id="26f6ddcd5429801c8ca0ff1aca7c31f1" class="notion-header-anchor"></div><a class="notion-hash-link" href="#26f6ddcd5429801c8ca0ff1aca7c31f1" title="🔄 Building a Seamless Knowledge Workflow: From Obsidian to GitHub to Vercel"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">🔄 Building a Seamless Knowledge Workflow: From Obsidian to GitHub to Vercel</span></span></h3><hr class="notion-hr notion-block-26f6ddcd54298050b5bee6ee9d42d502"/><div class="notion-text notion-block-26f6ddcd54298085a891e17687bfbc1a">Let&#x27;s first focus on maintaining the <b>standard database</b> — how to elegantly manage historical experiences in <b>Obsidian</b>, perform <code class="notion-inline-code"><b>git pull</b></code>, and ultimately use <b>GitHub Actions</b> to push updates to <b>Vercel</b>, enabling automatic backup and updates of <b>Hugo</b>. The workflow is illustrated in the Mermaid flowchart below:</div><div class="notion-text notion-block-26f6ddcd54298090a457f85af2a52bf3">By exploring the Obsidian plugin library, we identified a plugin that fits our needs: <b>Obsidian Git</b>. After reviewing its <a target="_blank" rel="noopener noreferrer" class="notion-link" href="https://publish.obsidian.md/git-doc">📖 full documentation</a>, we confirmed that it supports all the essential features required for our workflow:</div><ul class="notion-list notion-list-disc notion-block-26f6ddcd542980e990e6dc36000993fa"><li><code class="notion-inline-code"><b>git pull</b></code>: Supports both <b>automatic</b> and <b>manual</b> pulling of remote updates.</li></ul><ul class="notion-list notion-list-disc notion-block-26f6ddcd54298048843acca862e2c871"><li><code class="notion-inline-code"><b>git push</b></code>: Allows <b>automatic</b> or <b>manual</b> pushing of local changes to the remote repository.</li></ul><ul class="notion-list notion-list-disc notion-block-26f6ddcd542980a5a891f346b2db043f"><li><code class="notion-inline-code"><b>git commit</b></code>: Supports <b>automatic</b> or <b>manual</b> commits of changes.</li></ul><ul class="notion-list notion-list-disc notion-block-26f6ddcd54298035ba1ec8e278a476c8"><li><b>Conflict detection and handling</b>: The plugin does <b>not</b> auto-merge in the event of a conflict. Instead, it <b>notifies the user</b> to resolve conflicts manually.</li></ul><ul class="notion-list notion-list-disc notion-block-26f6ddcd5429801887bec1c3feb3117e"><li><b>Auto-sync intervals</b>: You can configure it to <b>automatically pull/push</b> at defined time intervals.</li></ul><ul class="notion-list notion-list-disc notion-block-26f6ddcd542980fbb319da9b2b12f9cb"><li><b>Sync on startup</b>: Automatically performs a <code class="notion-inline-code">git pull</code> when Obsidian is launched.</li></ul><ul class="notion-list notion-list-disc notion-block-26f6ddcd5429800ebea7e8810147f1fa"><li><b>Command palette integration</b>: All Git operations can be executed via Obsidian’s <b>command palette</b>, eliminating the need to use a terminal.</li></ul><div class="notion-text notion-block-26f6ddcd54298071bc55dc654e640562">This plugin fully meets our basic requirements for maintaining the <code class="notion-inline-code">standard-db</code> within Obsidian while seamlessly integrating with GitHub.</div><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-26f6ddcd5429804588d8c68e616ff872" data-id="26f6ddcd5429804588d8c68e616ff872"><span><div id="26f6ddcd5429804588d8c68e616ff872" class="notion-header-anchor"></div><a class="notion-hash-link" href="#26f6ddcd5429804588d8c68e616ff872" title="🧩 What Are Git Submodules Used For?"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">🧩 What Are Git Submodules Used For?</span></span></h3><hr class="notion-hr notion-block-26f6ddcd542980fa9a10e440ad60a171"/><div class="notion-text notion-block-26f6ddcd54298052a56ace650fadcb72">Git submodules allow you to <b>nest one Git repository inside another</b>, which is especially useful for:</div><ul class="notion-list notion-list-disc notion-block-26f6ddcd5429809895a4cfdd955cc0a5"><li>Referencing external dependencies (such as themes or libraries)</li></ul><ul class="notion-list notion-list-disc notion-block-26f6ddcd542980048f84f6145578613d"><li>Managing dependency versions independently</li></ul><ul class="notion-list notion-list-disc notion-block-26f6ddcd542980428178ebc24c52a8d7"><li>Avoiding copy-pasting third-party code into your main repository</li></ul><div class="notion-text notion-block-26f6ddcd54298035b512e2a55c4331b6">In <b>Hugo projects</b>, submodules are commonly used to include themes. For example:</div><div class="notion-text notion-block-26f6ddcd5429800e8558f609e3693a74">This command automatically updates the <code class="notion-inline-code">.gitmodules</code> file and adds the theme as a submodule under version control.</div><div class="notion-text notion-block-26f6ddcd542980339549ffff7cc10f49">If you decide <b>not to manage </b><code class="notion-inline-code"><b>blog/themes/meme</b></code><b> as a submodule</b>, you can simply delete the <code class="notion-inline-code">.gitmodules</code> file and remove the submodule itself from your repository.</div><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-26f6ddcd54298012a04fd9f343f0102d" data-id="26f6ddcd54298012a04fd9f343f0102d"><span><div id="26f6ddcd54298012a04fd9f343f0102d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#26f6ddcd54298012a04fd9f343f0102d" title="🧨Case: Why Sparse Checkout Didn’t Work as Expected"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">🧨Case: Why Sparse Checkout Didn’t Work as Expected</span></span></h3><hr class="notion-hr notion-block-26f6ddcd542980e7a6bcd4b2eba2546c"/><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-26f6ddcd54298004a119ee8478d79c62" data-id="26f6ddcd54298004a119ee8478d79c62"><span><div id="26f6ddcd54298004a119ee8478d79c62" class="notion-header-anchor"></div><a class="notion-hash-link" href="#26f6ddcd54298004a119ee8478d79c62" title="🎯Scenario"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">🎯Scenario</span></span></h4><hr class="notion-hr notion-block-26f6ddcd542980289e37f2667188d160"/><div class="notion-text notion-block-26f6ddcd542980d4bfd2fdb419c3a593">I ran the following commands:</div><div class="notion-text notion-block-26f6ddcd54298077a3b3e93f8f98581e">I expected to fetch only the <code class="notion-inline-code">content/</code> directory, but I still saw many other files in the root directory:</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-26f6ddcd542980cca571d7badbef745d" data-id="26f6ddcd542980cca571d7badbef745d"><span><div id="26f6ddcd542980cca571d7badbef745d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#26f6ddcd542980cca571d7badbef745d" title="🪤Root Cause"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">🪤Root Cause</span></span></h4><hr class="notion-hr notion-block-26f6ddcd5429802d8d89ee38a054e29a"/><div class="notion-text notion-block-26f6ddcd542980209522fb01b055afc4">By default, Git uses <b>cone mode</b> for sparse-checkout. In this mode:</div><ul class="notion-list notion-list-disc notion-block-26f6ddcd542980bea7d0cd7b1d16e2cb"><li>It only supports directory paths</li></ul><ul class="notion-list notion-list-disc notion-block-26f6ddcd5429801f8c80e81838fe9b75"><li>It <b>does not exclude root-level files</b>, even if I didn’t specify them</li></ul><div class="notion-text notion-block-26f6ddcd54298005a8c4caf137000a04">So even though I only set <code class="notion-inline-code">content/</code>, Git still checked out all the files in the root directory.</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-26f6ddcd542980e0b299d570f372cb58" data-id="26f6ddcd542980e0b299d570f372cb58"><span><div id="26f6ddcd542980e0b299d570f372cb58" class="notion-header-anchor"></div><a class="notion-hash-link" href="#26f6ddcd542980e0b299d570f372cb58" title="✅Correct Approach"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">✅Correct Approach</span></span></h4><div class="notion-text notion-block-26f6ddcd542980c5bec7fe7ca096401c">To fetch only the <code class="notion-inline-code">content/</code> directory and ignore everything else, I needed to switch to <b>non-cone mode</b>:</div><div class="notion-text notion-block-26f6ddcd5429803b85f4e0908f2ecb97">This way, only the <code class="notion-inline-code">content/</code> directory is checked out.</div><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-26f6ddcd542980a39b32fba0c4bf61ff" data-id="26f6ddcd542980a39b32fba0c4bf61ff"><span><div id="26f6ddcd542980a39b32fba0c4bf61ff" class="notion-header-anchor"></div><a class="notion-hash-link" href="#26f6ddcd542980a39b32fba0c4bf61ff" title="🧪 Final Fix (Step-by-Step Commands)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">🧪 Final Fix (Step-by-Step Commands)</span></span></h3><hr class="notion-hr notion-block-26f6ddcd5429805780c6fec6e38be34c"/><div class="notion-text notion-block-26f6ddcd542980dab6e7fc062245406d">To fix the issue and fetch only the desired directory, you can copy and paste the following:</div><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-26f6ddcd5429800e859af155e6d429b5" data-id="26f6ddcd5429800e859af155e6d429b5"><span><div id="26f6ddcd5429800e859af155e6d429b5" class="notion-header-anchor"></div><a class="notion-hash-link" href="#26f6ddcd5429800e859af155e6d429b5" title="🛠️ Bonus: Fetch Multiple Directories"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">🛠️ Bonus: Fetch Multiple Directories</span></span></h3><hr class="notion-hr notion-block-26f6ddcd54298038aaadc2415625070e"/><div class="notion-text notion-block-26f6ddcd54298072937ece818b82071e">If you want to include more than one directory (e.g., <code class="notion-inline-code">content/</code> and <code class="notion-inline-code">docs/</code>), update the sparse-checkout file like this:</div><div class="notion-text notion-block-26f6ddcd54298092b2a9fe4b0491701a">This will fetch both <code class="notion-inline-code">content/</code> and <code class="notion-inline-code">docs/</code> directories, and nothing else.</div><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-26f6ddcd542980f69c7eeb84244c0720" data-id="26f6ddcd542980f69c7eeb84244c0720"><span><div id="26f6ddcd542980f69c7eeb84244c0720" class="notion-header-anchor"></div><a class="notion-hash-link" href="#26f6ddcd542980f69c7eeb84244c0720" title="🧾 Conclusion"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">🧾 Conclusion</span></span></h2><hr class="notion-hr notion-block-26f6ddcd5429808fa5f3e02e239ac8a7"/><div class="notion-text notion-block-26f6ddcd542980fa8b6ddcad58d5dc52">By leveraging Git&#x27;s sparse-checkout (in non-cone mode), submodules, and Obsidian Git integration, we can build a streamlined and efficient knowledge management workflow. This setup not only reduces unnecessary clutter in local environments but also ensures version-controlled, automated, and scalable updates across platforms like GitHub and Vercel. Whether managing historical knowledge, creating new content, or organizing workspaces, this approach provides a solid foundation for maintaining a clean and productive knowledge ecosystem.</div></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[On the Burden of a Generation and the Pursuit of Self-Liberation]]></title>
            <link>https://matrixcore.top/article/250721</link>
            <guid>https://matrixcore.top/article/250721</guid>
            <pubDate>Mon, 21 Jul 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[This is a powerful declaration of personal and generational awakening. The author reflects on a broken economic and social system, rejecting outdated paths to success and inherited emotional burdens. Instead, they choose intentional living — prioritizing resilience, self-investment, and sovereignty. It’s a call to reclaim agency, pursue clarity and competence, and consciously author a life of freedom and purpose.]]></description>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-2376ddcd54298073b32fcfb3c249e661"><div class="notion-viewport"></div><hr class="notion-hr notion-block-2376ddcd542980d7a45acf783fd1a163"/><div class="notion-text notion-block-2376ddcd5429806db60cdab793df1313">Today, I find myself standing at a crossroads — not just personally, but generationally. The world we inherited is no longer the world our parents thrived in. The economic engines that once propelled entire families into prosperity have slowed, sputtered, and in many cases, reversed. The age of exponential growth, globalization, and policy-driven uplift has passed. What remains is a system burdened by debt, over-leverage, and diminishing returns.</div><div class="notion-text notion-block-2376ddcd542980ed9edad49cb6bf5c5e">We — the so-called “bulls and horses” of this era — are expected to carry the weight of yesterday’s promises while being denied the means to fulfill our own. We are told to endure, to compete, to strive harder in a game where the rules have changed and the rewards have shrunk. But the truth is clear: we are not broken — the system is.</div><div class="notion-text notion-block-2376ddcd542980568b9cf3cac05ee17e">In such a climate, the traditional pursuit of asset-based wealth has lost its relevance. What matters now is the management of liabilities, the preservation of cash flow, and the cultivation of resilience. Every decision must be grounded in necessity, not vanity. Consumption must shift from the demand side to the supply side — from impulse to intention.</div><div class="notion-text notion-block-2376ddcd542980b4949fddb94dfa0515">An iPhone 13 is sufficient. A secondhand car, if it meets one’s needs, is a rational choice. A NAS server, if it serves a clear purpose, is a valid investment. But anything beyond necessity must be questioned. We can no longer afford to be consumers of illusions.</div><div class="notion-text notion-block-2376ddcd5429804a9b8ddb6b309c8df5">This realization extends beyond economics. It is spiritual. Emotional. Existential.</div><div class="notion-text notion-block-2376ddcd54298026acb3df6821dbef57">Our generation is not only economically burdened — we are emotionally indebted. To our families, who meant well but often misled. To institutions that prioritized conformity over individuality. To relationships that promised connection but delivered confusion. I have carried these weights — guilt, resentment, disillusionment — but I carry them no longer.</div><div class="notion-text notion-block-2376ddcd54298034ac3fc4f73dbc720a">I now see that awakening is not a moment — it is a process. A shedding of illusions. A reclaiming of agency.</div><div class="notion-text notion-block-2376ddcd542980e39d54fca8f7816a01">The only viable investment left is the self. In language — to connect beyond borders. In technology — to remain relevant. In creativity — to generate value where none existed. In understanding — to navigate the chaos with clarity. These are the only assets that cannot be taxed, stolen, or devalued by policy.</div><div class="notion-text notion-block-2376ddcd54298047ae51f510e04e7c5c">I do not seek escape — I seek sovereignty.</div><div class="notion-text notion-block-2376ddcd542980f796acfa67276a3c73">I will not be a passive participant in a system that no longer serves me. Whether through strategic migration, skill acquisition, or intellectual reinvention, I will find a path to autonomy. Not to rebel, but to reclaim. Not to abandon, but to transcend.</div><div class="notion-text notion-block-2376ddcd542980d8a6dadf730163b9b0">I do not resent my origins. I am grateful for life, even if I critique the path it began on. I am thankful for the pain — it sharpened my awareness. I honor the love I once gave — it taught me what I value. But I will no longer be bound by inherited expectations or emotional debts.</div><div class="notion-text notion-block-2376ddcd542980e385a7c0da9c9ebab1">The next decade must not be spent in regret or resentment. It must be spent in pursuit — of clarity, of competence, of freedom.</div><div class="notion-text notion-block-2376ddcd5429808bb7caf237eeb26984">I am no longer asleep. I am no longer waiting.</div><div class="notion-text notion-block-2376ddcd5429808686f4d999808964e0">This is the beginning of my true life — authored by choice, not chance.</div><div class="notion-text notion-block-2376ddcd542980fc8217e562ff373765"><em>By MatrixCore</em></div><div class="notion-text notion-block-2376ddcd542980a3b81bdbf16220853a"><em>July 21st, 2025</em></div><div class="notion-blank notion-block-2376ddcd542980059805d53db7f3cc75"> </div></main></div>]]></content:encoded>
        </item>
    </channel>
</rss>