pages/garden/my-personal-website/index.html

62 lines
41 KiB
HTML
Raw Normal View History

<!DOCTYPE html>
<html lang="en-US" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>My Personal Website | The Paper Pilot</title>
<meta name="description" content="The Paper Pilot's Digital Garden">
<meta name="generator" content="VitePress v1.2.2">
<link rel="preload stylesheet" href="/assets/style.Bm-pp1cA.css" as="style">
<script type="module" src="/assets/app.fnk6rImb.js"></script>
<link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="modulepreload" href="/assets/chunks/framework.Sr2_9k8k.js">
<link rel="modulepreload" href="/assets/chunks/theme.CvmZfOTp.js">
<link rel="modulepreload" href="/assets/chunks/git.data.BUwP-Uc3.js">
<link rel="modulepreload" href="/assets/garden_my-personal-website_index.md.ZNBTkALw.lean.js">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Itim&amp;family=Roboto+Mono:ital,wght@0,400;0,600;1,400&amp;display=block">
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="manifest" href="/site.webmanifest">
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#3a0839">
<link rel="shortcut icon" href="/favicon.ico">
<meta name="msapplication-TileColor" content="#00FFFF">
<meta name="msapplication-config" content="/browserconfig.xml">
<meta name="theme-color" content="#3B4252">
<link rel="alternate" type="text/mf2+html" href="/changelog">
<link rel="alternate" type="application/rss+xml" title="Changelog" href="/changelog/rss">
<link rel="alternate" type="application/atom+xml" title="Changelog" href="/changelog/atom">
<link rel="alternate" type="application/json+xml" title="Changelog" href="/changelog/json">
<link rel="me" href="mailto:thepaperpilot@incremental.social">
<link rel="me" href="https://incremental.social/u/thepaperpilot">
<link rel="me" href="https://matrix.to/#/@thepaperpilot:incremental.social">
<link rel="me" href="https://code.incremental.social/thepaperpilot">
<link rel="me" href="https://www.linkedin.com/in/anthony-lawn/">
<link rel="me" href="https://mastodon.gamedev.place/@thepaperpilot">
<link rel="me" href="https://beehaw.org/u/thepaperpilot">
<link rel="me" href="https://www.reddit.com/user/ThePaperPilot/">
<link rel="me" href="https://github.com/thepaperpilot">
<link rel="me" href="https://twitter.com/ThePaperPilot">
<link rel="authorization_endpoint" href="https://indie.incremental.social/auth">
<link rel="token_endpoint" href="https://indie.incremental.social/auth/token">
<link rel="micropub" href="https://indie.incremental.social/micropub">
<link rel="indieauth-metadata" href="https://indie.incremental.social/.well-known/oauth-authorization-server">
<script data-goatcounter="https://thepaperpilot.goatcounter.com/count" async src="//gc.zgo.at/count.js"></script>
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
<meta name="og:title" content="My Personal Website">
<meta name="og:description" content="">
<meta name="og:image" content="https://www.thepaperpilot.org/paperpilot_thumb.png">
<meta name="og:site_name" content="The Paper Pilot's Digital Garden">
<meta name="og:type" content="article">
<meta name="article:author" content="https://www.thepaperpilot.org/about">
</head>
<body>
<div id="app"><div class="Layout" data-v-3f50bdda data-v-5d98c3a5><!--[--><!--[--><!--]--><!----><!--]--><!--[--><span tabindex="-1" data-v-0f60ec36></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0f60ec36> Skip to content </a><!--]--><!----><header class="VPNav" data-v-5d98c3a5 data-v-ae24b3ad><div class="VPNavBar has-sidebar top" data-v-ae24b3ad data-v-ccf7ddec><div class="wrapper" data-v-ccf7ddec><div class="container" data-v-ccf7ddec><div class="title" data-v-ccf7ddec><div class="VPNavBarTitle has-sidebar" data-v-ccf7ddec data-v-ab179fa1><a class="title" href="/" data-v-ab179fa1><!--[--><!--]--><!----><span data-v-ab179fa1>The Paper Pilot</span><!--[--><!--]--></a></div></div><div class="content" data-v-ccf7ddec><div class="content-body" data-v-ccf7ddec><!--[--><!--]--><div class="VPNavBarSearch search" data-v-ccf7ddec><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-ccf7ddec data-v-7f418b0f><span id="main-nav-aria-label" class="visually-hidden" data-v-7f418b0f>Main Navigation</span><!--[--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://moddingtree.com" target="_blank" rel="noreferrer" tabindex="0" data-v-7f418b0f data-v-9c663999><!--[--><span data-v-9c663999>Profectus</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://incremental.social" target="_blank" rel="noreferrer" tabindex="0" data-v-7f418b0f data-v-9c663999><!--[--><span data-v-9c663999>Incremental Social</span><!--]--></a><!--]--><!--]--></nav><!----><!----><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-ccf7ddec data-v-0394ad82 data-v-7bc22406><!--[--><a class="VPSocialLink no-icon" href="https://code.incremental.social/thepaperpilot" aria-label target="_blank" rel="noopener" data-v-7bc22406 data-v-eee4e7cb><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Forgejo</title><path d="M16.7773 0c1.6018 0 2.9004 1.2986 2.9004 2.9005s-1.2986 2.9004-2.9004 2.9004c-1.0854 0-2.0315-.596-2.5288-1.4787H12.91c-2.3322 0-4.2272 1.8718-4.2649 4.195l-.0007 2.1175a7.0759 7.0759 0 0 1 4.148-1.4205l.1176-.001 1.3385.0002c.4973-.8827 1.4434-1.4788 2.5288-1.4788 1.6018 0 2.9004 1.2986 2.9004 2.9005s-1.2986 2.9004-2.9004 2.9004c-1.0854 0-2.0315-.596-2.5288-1.4787H12.91c-2.3322 0-4.2272 1.8718-4.2649 4.195l-.0007 2.319c.8827.4973 1.4788 1.4434 1.4788 2.5287 0 1.602-1.2986 2.9005-2.9005 2.9005-1.6018 0-2.9004-1.2986-2.9004-2.9005 0-1.0853.596-2.0314 1.4788-2.5287l-.0002-9.9831c0-3.887 3.1195-7.0453 6.9915-7.108l.1176-.001h1.3385C14.7458.5962 15.692 0 16.7773 0ZM7.2227 19.9052c-.6596 0-1.1943.5347-1.1943 1.1943s.5347 1.1943 1.1943 1.1943 1.1944-.5347 1.1944-1.1943-.5348-1.1943-1.1944-1.1943Zm9.5546-10.4644c-.6596 0-1.1944.5347-1.1944 1.1943s.5348 1.1943 1.1944 1.1943c.6596 0 1.1943-.5347 1.1943-1.1943s-.5347-1.1943-1.1943-1.1943Zm0-7.7346c-.6596 0-1.1944.5347-1.1944 1.1943s.5348 1.1943 1.1944 1.1943c.6596 0 1.1943-.5347 1.1943-1.1943s-.5347-1.1943-1.1943-1.1943Z"/></svg></a><a class="VPSocialLink no-icon" href="https://matrix.to/#/@thepaperpilot:incremental.social" aria-label target="_blank" rel="noopener" data-v-7bc22406 data-v-eee4e7cb><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Matrix</title><path d="M.632.55v22.9H2.28V24H0V0h2.28v.55zm7.043 7.26v1.157h.033c.309-.443.683-.784 1.117-1.024.433-.245.936-.365 1.5-.365.54 0 1.033.107 1.481.314.448.208.785.582 1.02 1.108.254-.374.6-.706 1.034-.992.434-.287.95-.43 1.546-.43.453 0 .872.056 1.26.167.388.11.716.286.993.53.276.245.489.559.646.951.152.392.23.863.23 1.417v5.728h-2.349V11.52c0-.286-.01
. Last tended to <a href='https://code.incremental.social/thepaperpilot/pages/commit/5ac040e4c90a8c29635aec2017065e2dfd7e5a83' title='Wed Jun 26 09:56:04 2024 -0500'><time class='dt-updated' datetime='Wed Jun 26 09:56:04 2024 -0500'>2024-06-26</time></a>
.</span></p><hr><details><summary>Referenced by:</summary><a href="/garden/the-small-web/index.md">The Small Web</a></details><p>A <a href="/garden/the-small-web/">Personal Websites</a> for myself, available at <a href="https://thepaperpilot.org" target="_blank" rel="noreferrer">https://thepaperpilot.org</a></p><h2 id="tech-stack" tabindex="-1">Tech Stack <a class="header-anchor" href="#tech-stack" aria-label="Permalink to &quot;Tech Stack&quot;"></a></h2><p>I use <a href="/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 <a href="/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 <a href="/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 <a href="https://code.incremental.social/thepaperpilot/pages" target="_blank" rel="noreferrer">my website repo</a></p><p>A <a href="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>&lt;h1 /&gt;</code> titles, word counts, update commits, etc. to each page</li><li>Moves the /now page to <a href="https://thepaperpilot.org/now" target="_blank" rel="noreferrer">/now</a> instead of /garden/now</li><li>Copies some of the <a href="/garden/guide-to-incrementals/">Guide to Incrementals</a> pages to <a href="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 <a href="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&#39;d, as I use the git log to determine which pages updated when <span id="66757760-16ab-4777-976e-8bcbac053923"> - Commit information about when a file was last updated is added via a <a href="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><a href="/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 <a href="https://thepaperpilot.org" target="_blank" rel="noreferrer">homepage</a> and the <a href="https://thepaperpilot.org/about" target="_blank" rel="noreferrer">about me page</a> that require markup, thus don&#39;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 <a href="https://www.thepaperpilot.org/robots.txt" target="_blank" rel="noreferrer">robots.txt</a> (borrowed from <a href="https://tracydurnell.com/" target="_blank" rel="noreferrer">Tracy Durnell</a>&#39;s <a href="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></ul><p>Microformats are used to markup the site for <a href="/garden/t
<script>window.__VP_HASH_MAP__=JSON.parse("{\"garden_cinny_index.md\":\"DnInHWb1\",\"garden_activitypub_index.md\":\"sIY7koT7\",\"garden_chat-glue_index.md\":\"Bnb4GYZe\",\"about_index.md\":\"YpmaDm_z\",\"garden_chromatic-lattice_index.md\":\"DS8QpOJ6\",\"garden_art-is-never-complete_index.md\":\"Dv3_yygm\",\"garden_anarchism_index.md\":\"DAmBu6oZ\",\"garden_commune_index.md\":\"eHgRzIVG\",\"garden_artificial-intelligence_index.md\":\"DSowsFJ5\",\"garden_capture-the-citadel_index.md\":\"ClBXhl4P\",\"garden_advent-incremental_index.md\":\"CBQFg20Z\",\"garden_atproto_index.md\":\"CFdcY0us\",\"garden_consensus-democracy_index.md\":\"Do2GvxkT\",\"garden_davey-wreden_index.md\":\"BXPNFpnc\",\"garden_abolitionism_index.md\":\"BZ-1jpxG\",\"garden_babble-buds_index.md\":\"ouUGVu7A\",\"garden_garden-rss_index.md\":\"wlaws6QD\",\"garden_digital-gardens_index.md\":\"DB0AwFRU\",\"garden_direct-democracy_index.md\":\"DZbeQfzu\",\"garden_chronological_index.md\":\"DRT8PfOK\",\"garden_gender-performativity_index.md\":\"CcpGEzkx\",\"garden_dice-armor_index.md\":\"D-FYI3YV\",\"garden_federated-identity_index.md\":\"BH_-oosB\",\"garden_guide-to-incrementals_appeal-to-developers_index.md\":\"CiQfY1oG\",\"garden_fediverse_index.md\":\"BvVpy201\",\"garden_decentralized_index.md\":\"BMttkWvr\",\"garden_fedi-v2_index.md\":\"CLeo8TM6\",\"garden_gerrymandering_index.md\":\"DB_9W9mv\",\"garden_gender_index.md\":\"BgAuFtIF\",\"garden_command-palettes_index.md\":\"DjNi9-Ir\",\"garden_game-dev-tree_index.md\":\"N_-2dM6s\",\"garden_forgejo_index.md\":\"CWzmgAsD\",\"garden_freeform-vs-chronological-dichotomy_index.md\":\"d4GNGOFg\",\"garden_freeform_index.md\":\"sikWfgP7\",\"changelog_index.md\":\"Pu3ijHY1\",\"garden_my-political-beliefs_index.md\":\"CNmOQlAA\",\"garden_open-source_index.md\":\"0No9Bexl\",\"garden_representative-democracy_index.md\":\"D9XDqk2L\",\"garden_scientific-constructivism_index.md\":\"Bapu8gSD\",\"garden_social-media_index.md\":\"C_rshHxb\",\"garden_social-constructs_index.md\":\"BmBex1pp\",\"garden_kronos_index.md\":\"CAygoaPS\",\"garden_opti-speech_index.md\":\"D-c_Caf6\",\"garden_personality_index.md\":\"BgWodtd2\",\"garden_planar-pioneers_index.md\":\"Cp-Gr5Kp\",\"garden_pre-order-bonuses_index.md\":\"aAQECAJp\",\"guide-to-incrementals_index.md\":\"DpW2FLv9\",\"public_kronos_docs_!general-info.md\":\"DBOKRLme\",\"public_kronos_docs_achievements.md\":\"KsbXJC1r\",\"garden_video-game-monetization_index.md\":\"D4oPZ5o5\",\"garden_profectus_index.md\":\"CAjT53kI\",\"garden_nostr_index.md\":\"BTwtZvdS\",\"garden_premium-currency_index.md\":\"RbGW67Tt\",\"garden_vitepress_index.md\":\"Dd1B6_Va\",\"garden_webrings_index.md\":\"CMq8QG_q\",\"guide-to-incrementals_ludology_appeal-gamers_index.md\":\"D7h5c1A6\",\"garden_weird_index.md\":\"DQJvGNAN\",\"garden_v-ecs_index.md\":\"DBwjLwMx\",\"index.md\":\"C0qsRE8a\",\"public_gamedevtree_docs_achievements.md\":\"C0yB95Wu\",\"garden_synapse_index.md\":\"CJx2Ag0k\",\"garden_technocracy_index.md\":\"CxESpey7\",\"garden_the-beginner-s-guide_index.md\":\"1j9z05lk\",\"public_kronos_docs_bars.md\":\"CSguFZp_\",\"public_gamedevtree_docs_bars.md\":\"CUbXgosN\",\"guide-to-incrementals_ludology_appeal-developers_index.md\":\"5VSa7u0Q\",\"garden_ivy-road_index.md\":\"DQo3F7s-\",\"garden_individualism_index.md\":\"DaolB1Hr\",\"garden_my-political-journey_index.md\":\"CXy4hjK-\",\"garden_incremental-social_index.md\":\"CkSD9qsw\",\"garden_guide-to-incrementals_what-is-content_index.md\":\"DknnDNCz\",\"garden_mbin_index.md\":\"DJidym4f\",\"garden_guide-to-incrementals_appeal-to-players_index.md\":\"eLggv9wE\",\"garden_mtx_index.md\":\"BOM6E74e\",\"garden_life-is-strange_index.md\":\"CZw0e2Zn\",\"garden_political-quizzes_index.md\":\"DcJF7Wu-\",\"garden_my-projects_index.md\":\"CVDNeL6V\",\"garden_logseq_index.md\":\"D-wfwZWM\",\"garden_objectivity_index.md\":\"BNZ-tJYM\",\"garden_orchard_index.md\":\"DQmj8SR-\",\"garden_my-browser-stack_index.md\":\"7OkK8Nfb\",\"garden_guide-to-incrementals_defining-the-genre_index.md\":\"CycUk0d0\",\"garden_guide-to-incrementals_index.md\":\"D7mjbVna\",\"garden_m
</body>
</html>