. Last tended to <ahref='https://code.incremental.social/thepaperpilot/pages/commit/9aa6bf46bfd132527bed478007a37223f4f29de6'title='Thu Nov 28 22:01:32 2024 -0600'><timeclass='dt-updated'datetime='Thu Nov 28 22:01:32 2024 -0600'>2024-11-28</time></a>
.</span></p><hr><details><summary>Referenced by:</summary><ahref="/garden/the-small-web/index.md">The Small Web</a><ahref="/garden/this-knowledge-hub/index.md">This Knowledge Hub</a></details><p>A <ahref="/garden/the-small-web/">Personal Websites</a> for myself, available at <ahref="https://thepaperpilot.org"target="_blank"rel="noreferrer">https://thepaperpilot.org</a></p><h2id="tech-stack"tabindex="-1">Tech Stack <aclass="header-anchor"href="#tech-stack"aria-label="Permalink to "Tech Stack""></a></h2><p>I use <ahref="/garden/logseq/">Logseq</a> to journal and collect my thoughts on various topics that interest me</p><ul><li>Seafile syncs my logseq files between my devices</li><li>Git syncs my logseq files to a private repo on <ahref="/garden/incremental-social/">Incremental Social</a> for purposes of version control and using as a submodule</li><li>The seafile files and all repos on <ahref="/garden/incremental-social/">Incremental Social</a> are independently backed up daily to backblaze</li></ul><p>My logseq files are synced to a private git repo which is added as a submodule to <ahref="https://code.incremental.social/thepaperpilot/pages"target="_blank"rel="noreferrer">my website repo</a></p><p>A <ahref="https://code.incremental.social/thepaperpilot/pages/src/branch/master/build_garden.js"target="_blank"rel="noreferrer">Node.js script</a> pre-processes my logseq files into markdown files in the <code>/garden</code> path of the website</p><ul><li>Converts all links and block references</li><li>Adds lists of tags and references to pages</li><li>Adds <code><h1 /></code> titles, word counts, update commits, etc. to each page</li><li>Moves the /now page to <ahref="https://thepaperpilot.org/now"target="_blank"rel="noreferrer">/now</a> instead of /garden/now</li><li>Copies some of the <ahref="/garden/guide-to-incrementals/">Guide to Incrementals</a> pages to <ahref="https://thepaperpilot.org/guide-to-incrementals/"target="_blank"rel="noreferrer">/guide-to-incrementals</a> so as to not break links made before the current site iteration</li><li>Generates <ahref="https://www.thepaperpilot.org/changelog/"target="_blank"rel="noreferrer">/changelog</a> and its RSS, Atom, and JSON feeds <ul><li>The outputs of the generation are NOT .gitignore'd, as I use the git log to determine which pages updated when <spanid="66757760-16ab-4777-976e-8bcbac053923"> - Commit information about when a file was last updated is added via a <ahref="https://vitepress.dev/guide/data-loading"target="_blank"rel="noreferrer">data loader</a> because if it was added to the file directly, rebuilding the site would count as having updated every page, by updating each commit to the changes introduced last build</span></li></ul></li></ul><p><ahref="/garden/vitepress/">Vitepress</a> builds a static site from the markdown files</p><ul><li>Includes a custom theme that makes the whole site paper-themed</li><li>Includes some pages like the <ahref="https://thepaperpilot.org"target="_blank"rel="noreferrer">homepage</a> and the <ahref="https://thepaperpilot.org/about"target="_blank"rel="noreferrer">about me page</a> that require markup, thus don't make sense to maintain inside logseq</li><li>The sidebar is generated from my favorited pages within Logseq</li><li>Includes various static files, like copies of several of my games and a <ahref="https://www.thepaperpilot.org/robots.txt"target="_blank"rel="noreferrer">robots.txt</a> (borrowed from <ahref="https://tracydurnell.com/"target="_blank"rel="noreferrer">Tracy Durnell</a>'s <ahref="https://tracydurnell.com/robots.txt"target="_blank"rel="noreferrer">robots.txt</a>) that blocks several crawlers specifically used for training AI models</li></ul><p>Three.js is used to create the effect in the background</p><ul><li>Simplex noise gets used to adjust the opacity of a repeating SVG pattern</li><li>Initially tried to use just SVG, which supports creating noise and using it as a mask, but it only does 2d noise and I need 2d slices of 3d noise</li></u