pages/garden/fedi-v2/index.html

313 lines
No EOL
51 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en-US" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Fedi v2 | The Paper Pilot</title>
<meta name="description" content="The Paper Pilot Personal Website">
<meta name="generator" content="VitePress v1.2.2">
<link rel="preload stylesheet" href="/assets/style.DZitj0Al.css" as="style">
<script type="module" src="/assets/app.fRTEzOm5.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.D8PMdl4T.js">
<link rel="modulepreload" href="/assets/chunks/theme.g7q6KECo.js">
<link rel="modulepreload" href="/assets/garden_fedi-v2_index.md.BgcweGyn.lean.js">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Pacifico&amp;family=Roboto+Mono:ital,wght@0,400;0,600;1,400&amp;display=swap">
<link rel="manifest" href="/site.webmanifest">
<link rel="alternate" type="text/mf2+html" href="/changelog">
<meta name="og:description" content="The Paper Pilot portfolio site">
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
</head>
<body>
<div id="app"><div class="Layout" 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="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><span class="DocSearch-Button-Key">Meta</span><span class="DocSearch-Button-Key">K</span></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="VPNavBarAppearance appearance" data-v-ccf7ddec data-v-e6aabb21><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="Switch to dark theme" aria-checked="false" data-v-e6aabb21 data-v-d1f28634 data-v-1d5665e3><span class="check" data-v-1d5665e3><span class="icon" data-v-1d5665e3><!--[--><span class="vpi-sun sun" data-v-d1f28634></span><span class="vpi-moon moon" data-v-d1f28634></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-ccf7ddec data-v-0394ad82 data-v-7bc22406><!--[--><a class="VPSocialLink no-icon" href="https://github.com/thepaperpilot" aria-label="github" target="_blank" rel="noopener" data-v-7bc22406 data-v-eee4e7cb><span class="vpi-social-github" /></a><a class="VPSocialLink no-icon" href="https://www.linkedin.com/pub/anthony-lawn/a9/a98/2" aria-label="linkedin" target="_blank" rel="noopener" data-v-7bc22406 data-v-eee4e7cb><span class="vpi-social-linkedin" /></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 xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" version="1.1" viewBox="0 0 27.9 32" style="background-color:white">
<g xmlns="http://www.w3.org/2000/svg" transform="translate(-.095 .005)" fill="#040404">
<path d="m27.1 31.2v-30.5h-2.19v-0.732h3.04v32h-3.04v-0.732z"/>
<path d="m8.23 10.4v1.54h0.044c0.385-0.564 0.893-1.03 1.49-1.37 0.58-0.323 1.25-0.485 1.99-0.485 0.72 0 1.38 0.14 1.97 0.42 0.595 0.279 1.05 0.771 1.36 1.48 0.338-0.5 0.796-0.941 1.38-1.32 0.58-0.383 1.27-0.574 2.06-0.574 0.602 0 1.16 0.074 1.67 0.22 0.514 0.148 0.954 0.383 1.32 0.707 0.366 0.323 0.653 0.746 0.859 1.27 0.205 0.522 0.308 1.15 0.308 1.89v7.63h-3.13v-6.46c0-0.383-0.015-0.743-0.044-1.08-0.0209-0.307-0.103-0.607-0.242-0.882-0.133-0.251-0.336-0.458-0.584-0.596-0.257-0.146-0.606-0.22-1.05-0.22-0.44 0-0.796 0.085-1.07 0.253-0.272 0.17-0.485 0.39-0.639 0.662-0.159 0.287-0.264 0.602-0.308 0.927-0.052 0.347-0.078 0.697-0.078 1.05v6.35h-3.13v-6.4c0-0.338-7e-3 -0.673-0.021-1-0.0114-0.314-0.0749-0.623-0.188-0.916-0.108-0.277-0.3-0.512-0.55-0.673-0.258-0.168-0.636-0.253-1.14-0.253-0.198 0.0083-0.394 0.042-0.584 0.1-0.258 0.0745-0.498 0.202-0.705 0.374-0.228 0.184-0.422 0.449-0.584 0.794-0.161 0.346-0.242 0.798-0.242 1.36v6.62h-3.13v-11.4z"/>
<path d="m0.936 0.732v30.5h2.19v0.732h-3.04v-32h3.03v0.732z"/>
</g>
</svg></a><a class="VPSocialLink no-icon" href="https://incremental.social/u/thepaperpilot" aria-label target="_blank" rel="noopener" data-v-7bc22406 data-v-eee4e7cb><?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
viewBox="0 0 334.73599 334.736"
id="svg40"
sodipodi:docname="logo_condensed.svg"
inkscape:version="1.3.1 (5ab75fa947, 2023-11-03)"
width="334.73599"
height="334.73599"
inkscape:export-filename="logo_condensed_forgejo.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs44" />
<sodipodi:namedview
id="namedview42"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:pageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="2.8284271"
inkscape:cx="87.327687"
inkscape:cy="132.40574"
inkscape:window-width="2560"
inkscape:window-height="1369"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g4"
inkscape:showpageshadow="0"
inkscape:deskcolor="#d1d1d1"
showguides="true">
<sodipodi:guide
position="264.97068,-61.5051"
orientation="1,0"
id="guide1"
inkscape:locked="false" />
<sodipodi:guide
position="93.001002,77.044749"
orientation="1,0"
id="guide2"
inkscape:locked="false" />
<sodipodi:guide
position="109.56249,95.005809"
orientation="1,0"
id="guide3"
inkscape:locked="false" />
<sodipodi:guide
position="163.99999,77.505809"
orientation="1,0"
id="guide4"
inkscape:locked="false" />
<sodipodi:guide
position="179,1.5058096"
orientation="1,0"
id="guide5"
inkscape:locked="false" />
</sodipodi:namedview>
<g
id="g1"
transform="translate(-1,84.932692)">
<path
fill="#6b438b"
d="m 271.24983,105.65061 q -0.36,4.08 -0.31,8.47 0.05,4.56 -4.49,8.19 -9.11,7.28 -17.84,-0.35 c -5.3,-4.65 -3.99,-10.34 -4.42,-16.25 -11.33,-3.3 -21.65,-12.470005 -22.8,-24.590005 q -0.53,-5.59 -0.95,-11.21 -0.04,-0.52 -0.53,-0.64 c -4.87,-1.23 -7.99,-2.08 -10.29,-6.94 -3.9,-8.23 0.79,-15.35 8.92,-18.12 a 0.39,0.4 77.9 0 0 0.27,-0.41 c -0.74,-8.02 -1.4,-15.08 1.56,-22.79 3.11,-8.09 9.57,-14.2599996 17.53,-17.6199996 q 4.11,-1.73 10.44,-2.07 8.68,-0.46000001 17.4,-0.26 16.85,0.37 26.28,13.5899996 c 6.43,9.02 5.96,18.48 5.03,29.16 q -0.05,0.51 0.45,0.64 c 13.7,3.61 12.56,22.82 -1.42,24.78 a 0.71,0.71 0 0 0 -0.61,0.65 c -0.38,5.39 -0.17,11.34 -2.1,16.46 q -5.7,15.160005 -22.12,19.310005 z"
id="path28"
style="display:inline" />
<path
fill="#eceff4"
d="m 142.39,41.700605 -31,11.57 a 0.62,0.61 79.8 0 1 -0.83,-0.58 l 0.01,-19.31 q 0,-0.55 0.51,-0.74 23.03,-8.68 46.02,-17.25 c 2.57,-0.96 4.78,-0.76 7.42,-0.75 a 0.49,0.49 0 0 1 0.49,0.49 V 147.45061 a 0.79,0.79 0 0 1 -0.8,0.79 l -19.99,-0.01 q -1.17,0 -1.17,-1.16 V 42.160605 a 0.49,0.49 0 0 0 -0.66,-0.46 z"
id="path30"
style="display:inline" />
<path
fill="#eceff4"
d="m 59.21,74.480605 h 33.95 a 0.84,0.84 0 0 1 0.84,0.84 l -0.01,18.96 a 0.84,0.84 0 0 1 -0.84,0.84 l -33.88,0.03 a 0.84,0.84 0 0 0 -0.84,0.84 l -0.08,38.580005 a 0.84,0.84 0 0 1 -0.84,0.84 l -20.11,-0.01 a 0.84,0.84 0 0 1 -0.84,-0.84 L 36.55,95.980605 a 0.84,0.84 0 0 0 -0.84,-0.84 H 1.84 a 0.84,0.84 0 0 1 -0.84,-0.84 l 0.02,-19.02 a 0.84,0.84 0 0 1 0.84,-0.84 l 33.86,0.02 a 0.84,0.84 0 0 0 0.84,-0.84 v -35.79 a 0.84,0.84 0 0 1 0.84,-0.84 l 20.13,-0.02 a 0.84,0.84 0 0 1 0.84,0.84 v 35.83 a 0.84,0.84 0 0 0 0.84,0.84 z"
id="path32"
style="display:inline" />
<path
fill="#533566"
d="m 244.18983,105.71061 c 0.43,5.91 -0.88,11.6 4.42,16.25 q 8.73,7.63 17.84,0.35 4.54,-3.63 4.49,-8.19 -0.05,-4.39 0.31,-8.47 24.6,4 42.34,20.72 l -0.18,37.49 -110.93,0.01 -0.09,-37.61 q 17.53,-16.43 41.8,-20.55 z"
id="path34"
style="display:inline" />
<path
fill="#6b438b"
d="m 202.38983,126.26061 0.09,37.61 -21.38,-0.49 a 1.13,1.13 0 0 1 -1.04,-1.49 q 7.21,-21.29 22.33,-35.63 z"
id="path36"
style="display:inline" />
<path
fill="#6b438b"
d="m 313.58983,126.37061 q 12.71,12.03 19.9,29.52 1.79,4.36 2.23,6.86 0.11,0.61 -0.51,0.62 l -21.8,0.49 z"
id="path38"
style="display:inline" />
<g
transform="matrix(0.77226665,0,0,0.77226665,154.89692,5.2164554)"
id="g4"
style="display:none">
<path
d="M 58,168 V 70 a 50,50 0 0 1 50,-50 h 20"
class="orange"
id="path1"
style="fill:none;stroke:#ff6600;stroke-width:25" />
<path
d="m 58,168 v -30 a 50,50 0 0 1 50,-50 h 20"
class="red"
id="path2-3"
style="fill:none;stroke:#d40000;stroke-width:25" />
<circle
cx="142"
cy="20"
r="18"
class="orange"
id="circle2"
style="fill:none;stroke:#ff6600;stroke-width:15" />
<circle
cx="142"
cy="88"
r="18"
class="red"
id="circle3"
style="fill:none;stroke:#d40000;stroke-width:15" />
<circle
cx="58"
cy="180"
r="18"
class="red"
id="circle4"
style="fill:none;stroke:#d40000;stroke-width:15" />
</g>
</g>
</svg>
</a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-ccf7ddec data-v-d0bd9dde data-v-b6c34ac9><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-b6c34ac9><span class="vpi-more-horizontal icon" data-v-b6c34ac9></span></button><div class="menu" data-v-b6c34ac9><div class="VPMenu" data-v-b6c34ac9 data-v-e7ea1737><!----><!--[--><!--[--><!----><div class="group" data-v-d0bd9dde><div class="item appearance" data-v-d0bd9dde><p class="label" data-v-d0bd9dde>Appearance</p><div class="appearance-action" data-v-d0bd9dde><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="Switch to dark theme" aria-checked="false" data-v-d0bd9dde data-v-d1f28634 data-v-1d5665e3><span class="check" data-v-1d5665e3><span class="icon" data-v-1d5665e3><!--[--><span class="vpi-sun sun" data-v-d1f28634></span><span class="vpi-moon moon" data-v-d1f28634></span><!--]--></span></span></button></div></div></div><div class="group" data-v-d0bd9dde><div class="item social-links" data-v-d0bd9dde><div class="VPSocialLinks social-links-list" data-v-d0bd9dde data-v-7bc22406><!--[--><a class="VPSocialLink no-icon" href="https://github.com/thepaperpilot" aria-label="github" target="_blank" rel="noopener" data-v-7bc22406 data-v-eee4e7cb><span class="vpi-social-github" /></a><a class="VPSocialLink no-icon" href="https://www.linkedin.com/pub/anthony-lawn/a9/a98/2" aria-label="linkedin" target="_blank" rel="noopener" data-v-7bc22406 data-v-eee4e7cb><span class="vpi-social-linkedin" /></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 xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" version="1.1" viewBox="0 0 27.9 32" style="background-color:white">
<g xmlns="http://www.w3.org/2000/svg" transform="translate(-.095 .005)" fill="#040404">
<path d="m27.1 31.2v-30.5h-2.19v-0.732h3.04v32h-3.04v-0.732z"/>
<path d="m8.23 10.4v1.54h0.044c0.385-0.564 0.893-1.03 1.49-1.37 0.58-0.323 1.25-0.485 1.99-0.485 0.72 0 1.38 0.14 1.97 0.42 0.595 0.279 1.05 0.771 1.36 1.48 0.338-0.5 0.796-0.941 1.38-1.32 0.58-0.383 1.27-0.574 2.06-0.574 0.602 0 1.16 0.074 1.67 0.22 0.514 0.148 0.954 0.383 1.32 0.707 0.366 0.323 0.653 0.746 0.859 1.27 0.205 0.522 0.308 1.15 0.308 1.89v7.63h-3.13v-6.46c0-0.383-0.015-0.743-0.044-1.08-0.0209-0.307-0.103-0.607-0.242-0.882-0.133-0.251-0.336-0.458-0.584-0.596-0.257-0.146-0.606-0.22-1.05-0.22-0.44 0-0.796 0.085-1.07 0.253-0.272 0.17-0.485 0.39-0.639 0.662-0.159 0.287-0.264 0.602-0.308 0.927-0.052 0.347-0.078 0.697-0.078 1.05v6.35h-3.13v-6.4c0-0.338-7e-3 -0.673-0.021-1-0.0114-0.314-0.0749-0.623-0.188-0.916-0.108-0.277-0.3-0.512-0.55-0.673-0.258-0.168-0.636-0.253-1.14-0.253-0.198 0.0083-0.394 0.042-0.584 0.1-0.258 0.0745-0.498 0.202-0.705 0.374-0.228 0.184-0.422 0.449-0.584 0.794-0.161 0.346-0.242 0.798-0.242 1.36v6.62h-3.13v-11.4z"/>
<path d="m0.936 0.732v30.5h2.19v0.732h-3.04v-32h3.03v0.732z"/>
</g>
</svg></a><a class="VPSocialLink no-icon" href="https://incremental.social/u/thepaperpilot" aria-label target="_blank" rel="noopener" data-v-7bc22406 data-v-eee4e7cb><?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
viewBox="0 0 334.73599 334.736"
id="svg40"
sodipodi:docname="logo_condensed.svg"
inkscape:version="1.3.1 (5ab75fa947, 2023-11-03)"
width="334.73599"
height="334.73599"
inkscape:export-filename="logo_condensed_forgejo.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs44" />
<sodipodi:namedview
id="namedview42"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:pageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="2.8284271"
inkscape:cx="87.327687"
inkscape:cy="132.40574"
inkscape:window-width="2560"
inkscape:window-height="1369"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g4"
inkscape:showpageshadow="0"
inkscape:deskcolor="#d1d1d1"
showguides="true">
<sodipodi:guide
position="264.97068,-61.5051"
orientation="1,0"
id="guide1"
inkscape:locked="false" />
<sodipodi:guide
position="93.001002,77.044749"
orientation="1,0"
id="guide2"
inkscape:locked="false" />
<sodipodi:guide
position="109.56249,95.005809"
orientation="1,0"
id="guide3"
inkscape:locked="false" />
<sodipodi:guide
position="163.99999,77.505809"
orientation="1,0"
id="guide4"
inkscape:locked="false" />
<sodipodi:guide
position="179,1.5058096"
orientation="1,0"
id="guide5"
inkscape:locked="false" />
</sodipodi:namedview>
<g
id="g1"
transform="translate(-1,84.932692)">
<path
fill="#6b438b"
d="m 271.24983,105.65061 q -0.36,4.08 -0.31,8.47 0.05,4.56 -4.49,8.19 -9.11,7.28 -17.84,-0.35 c -5.3,-4.65 -3.99,-10.34 -4.42,-16.25 -11.33,-3.3 -21.65,-12.470005 -22.8,-24.590005 q -0.53,-5.59 -0.95,-11.21 -0.04,-0.52 -0.53,-0.64 c -4.87,-1.23 -7.99,-2.08 -10.29,-6.94 -3.9,-8.23 0.79,-15.35 8.92,-18.12 a 0.39,0.4 77.9 0 0 0.27,-0.41 c -0.74,-8.02 -1.4,-15.08 1.56,-22.79 3.11,-8.09 9.57,-14.2599996 17.53,-17.6199996 q 4.11,-1.73 10.44,-2.07 8.68,-0.46000001 17.4,-0.26 16.85,0.37 26.28,13.5899996 c 6.43,9.02 5.96,18.48 5.03,29.16 q -0.05,0.51 0.45,0.64 c 13.7,3.61 12.56,22.82 -1.42,24.78 a 0.71,0.71 0 0 0 -0.61,0.65 c -0.38,5.39 -0.17,11.34 -2.1,16.46 q -5.7,15.160005 -22.12,19.310005 z"
id="path28"
style="display:inline" />
<path
fill="#eceff4"
d="m 142.39,41.700605 -31,11.57 a 0.62,0.61 79.8 0 1 -0.83,-0.58 l 0.01,-19.31 q 0,-0.55 0.51,-0.74 23.03,-8.68 46.02,-17.25 c 2.57,-0.96 4.78,-0.76 7.42,-0.75 a 0.49,0.49 0 0 1 0.49,0.49 V 147.45061 a 0.79,0.79 0 0 1 -0.8,0.79 l -19.99,-0.01 q -1.17,0 -1.17,-1.16 V 42.160605 a 0.49,0.49 0 0 0 -0.66,-0.46 z"
id="path30"
style="display:inline" />
<path
fill="#eceff4"
d="m 59.21,74.480605 h 33.95 a 0.84,0.84 0 0 1 0.84,0.84 l -0.01,18.96 a 0.84,0.84 0 0 1 -0.84,0.84 l -33.88,0.03 a 0.84,0.84 0 0 0 -0.84,0.84 l -0.08,38.580005 a 0.84,0.84 0 0 1 -0.84,0.84 l -20.11,-0.01 a 0.84,0.84 0 0 1 -0.84,-0.84 L 36.55,95.980605 a 0.84,0.84 0 0 0 -0.84,-0.84 H 1.84 a 0.84,0.84 0 0 1 -0.84,-0.84 l 0.02,-19.02 a 0.84,0.84 0 0 1 0.84,-0.84 l 33.86,0.02 a 0.84,0.84 0 0 0 0.84,-0.84 v -35.79 a 0.84,0.84 0 0 1 0.84,-0.84 l 20.13,-0.02 a 0.84,0.84 0 0 1 0.84,0.84 v 35.83 a 0.84,0.84 0 0 0 0.84,0.84 z"
id="path32"
style="display:inline" />
<path
fill="#533566"
d="m 244.18983,105.71061 c 0.43,5.91 -0.88,11.6 4.42,16.25 q 8.73,7.63 17.84,0.35 4.54,-3.63 4.49,-8.19 -0.05,-4.39 0.31,-8.47 24.6,4 42.34,20.72 l -0.18,37.49 -110.93,0.01 -0.09,-37.61 q 17.53,-16.43 41.8,-20.55 z"
id="path34"
style="display:inline" />
<path
fill="#6b438b"
d="m 202.38983,126.26061 0.09,37.61 -21.38,-0.49 a 1.13,1.13 0 0 1 -1.04,-1.49 q 7.21,-21.29 22.33,-35.63 z"
id="path36"
style="display:inline" />
<path
fill="#6b438b"
d="m 313.58983,126.37061 q 12.71,12.03 19.9,29.52 1.79,4.36 2.23,6.86 0.11,0.61 -0.51,0.62 l -21.8,0.49 z"
id="path38"
style="display:inline" />
<g
transform="matrix(0.77226665,0,0,0.77226665,154.89692,5.2164554)"
id="g4"
style="display:none">
<path
d="M 58,168 V 70 a 50,50 0 0 1 50,-50 h 20"
class="orange"
id="path1"
style="fill:none;stroke:#ff6600;stroke-width:25" />
<path
d="m 58,168 v -30 a 50,50 0 0 1 50,-50 h 20"
class="red"
id="path2-3"
style="fill:none;stroke:#d40000;stroke-width:25" />
<circle
cx="142"
cy="20"
r="18"
class="orange"
id="circle2"
style="fill:none;stroke:#ff6600;stroke-width:15" />
<circle
cx="142"
cy="88"
r="18"
class="red"
id="circle3"
style="fill:none;stroke:#d40000;stroke-width:15" />
<circle
cx="58"
cy="180"
r="18"
class="red"
id="circle4"
style="fill:none;stroke:#d40000;stroke-width:15" />
</g>
</g>
</svg>
</a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-ccf7ddec data-v-e5dd9c1c><span class="container" data-v-e5dd9c1c><span class="top" data-v-e5dd9c1c></span><span class="middle" data-v-e5dd9c1c></span><span class="bottom" data-v-e5dd9c1c></span></span></button></div></div></div></div><div class="divider" data-v-ccf7ddec><div class="divider-line" data-v-ccf7ddec></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-5d98c3a5 data-v-a6f0e41e><div class="container" data-v-a6f0e41e><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-a6f0e41e><span class="vpi-align-left menu-icon" data-v-a6f0e41e></span><span class="menu-text" data-v-a6f0e41e>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-a6f0e41e data-v-17a5e62e><button data-v-17a5e62e>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-5d98c3a5 data-v-575e6a36><div class="curtain" data-v-575e6a36></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-575e6a36><span class="visually-hidden" id="sidebar-aria-label" data-v-575e6a36> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="group" data-v-575e6a36><section class="VPSidebarItem level-0" data-v-575e6a36 data-v-b8d55f3b><div class="item" role="button" tabindex="0" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><h2 class="text" data-v-b8d55f3b>Recommended Pages</h2><!----></div><div class="items" data-v-b8d55f3b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/garden/my-projects" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>My Projects</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/garden/guide-to-incrementals" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Guide to Incrementals</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/garden/the-small-web" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>The Small Web</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/garden/fedi-v2" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Fedi v2</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-575e6a36><section class="VPSidebarItem level-0" data-v-575e6a36 data-v-b8d55f3b><!----><div class="items" data-v-b8d55f3b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/changelog" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Changelog</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-5d98c3a5 data-v-1428d186><div class="VPDoc has-sidebar has-aside" data-v-1428d186 data-v-39a288b8><!--[--><!--]--><div class="container" data-v-39a288b8><div class="aside" data-v-39a288b8><div class="aside-curtain" data-v-39a288b8></div><div class="aside-container" data-v-39a288b8><div class="aside-content" data-v-39a288b8><div class="VPDocAside" data-v-39a288b8 data-v-3f215769><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-3f215769 data-v-a5bbad30><div class="content" data-v-a5bbad30><div class="outline-marker" data-v-a5bbad30></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-a5bbad30>On this page</div><ul class="VPDocOutlineItem root" data-v-a5bbad30 data-v-b933a997><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-3f215769></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-39a288b8><div class="content-container" data-v-39a288b8><!--[--><!--]--><main class="main" data-v-39a288b8><div style="position:relative;" class="vp-doc _garden_fedi-v2_" data-v-39a288b8><div><h1 id="fedi-v2" tabindex="-1">Fedi v2 <a class="header-anchor" href="#fedi-v2" aria-label="Permalink to &quot;Fedi v2&quot;"></a></h1><blockquote><p>Referenced by: <a href="/garden/social-media/">Social Media</a></p></blockquote><p>My take on a theoretical successor to federated <a href="/garden/social-media/">Social Media</a></p><h2 id="inspiration" tabindex="-1">Inspiration <a class="header-anchor" href="#inspiration" aria-label="Permalink to &quot;Inspiration&quot;"></a></h2><ul><li><a href="https://raphael.lullis.net/a-plan-for-social-media-less-fedi-more-webby/" target="_blank" rel="noreferrer">A Plan for Social Media - Rethinking Federation</a><ul><li>This article doesn&#39;t address many implementation details: <ul><li>If the server is a relay, can content not be viewed anonymously?</li><li>How to handle storing large amounts of data on every client?</li><li>Don&#39;t you still need to associate with a server for people to direct their messages to?</li></ul></li></ul></li><li><a href="https://mull.net/mastodon" target="_blank" rel="noreferrer">Single-user Mastodon Instance is a Bad Idea</a><ul><li>Focuses on the non-feasibility of self hosting, contributing to <a href="/garden/fediverse/">Federated Social Media</a> not actually having all the upsides it should theoretically have by virtue of being <a href="/garden/decentralized/">Decentralized</a></li></ul></li><li>The <a href="/garden/commune/">Commune</a> community</li><li>Existing protocols: <ul><li><a href="https://nostr.com" target="_blank" rel="noreferrer">Nostr</a></li><li><a href="https://atproto.com" target="_blank" rel="noreferrer">ATProto</a></li></ul></li><li>A lot of these ideas are learned lessons from the usenet days</li></ul><p><a href="/garden/weird/">Weird</a> may eventually move in the direction of implementing something like this</p><ul><li><a href="https://github.com/commune-os/weird/discussions/32" target="_blank" rel="noreferrer">Next Gen Federation on Iroh: Graph Data &amp; Linked Documents Layers</a></li></ul><h2 id="identity" tabindex="-1">Identity <a class="header-anchor" href="#identity" aria-label="Permalink to &quot;Identity&quot;"></a></h2><ul><li><a href="/garden/federated-identity/">Federated Identity</a></li><li>Private and public keys anyone can create and store how they want <ul><li>Fully free to create and store with no server dependencies</li></ul></li><li>Profile information <ul><li>Sent as a signed message through all the relays</li><li>How would you trust a username? <ul><li><a href="https://spritely.institute/static/papers/petnames.html" target="_blank" rel="noreferrer">Petnames</a> could be used to display human readable names via contacts or decentralized &quot;naming hubs&quot;</li><li>In most conversations online, you can trust their display name and add them as a contact as that display name <ul><li>You only need to verify they are the same person you interacted with previously</li><li>You only need to trust people you want to send money to or otherwise &quot;important identities&quot;</li><li>For important identities, you can trust your contacts forming a chain of trust, or a authoritative naming hub <ul><li>E.g. a white house ran naming hub that verifies the identities of the president and people of Congress</li><li>People typically wouldn&#39;t reach out to a naming hub, as it&#39;s not typically necessary</li></ul></li><li>Contacts supercede naming hubs, so if a naming hub is breached, anyone I&#39;ve previously added as a contact is still the source of truth <ul><li>This only fails if the private key itself was breached</li></ul></li><li>I&#39;m just thepaperpilot, my display name. For most online communication, this is sufficient <ul><li>My website can have a nameserver saying this publickey is the same as the site owner</li><li>If I write a paper at a scientific journal, they can say the author of x paper is my publickey</li></ul></li></ul></li></ul></li></ul></li><li>How to handle losing your private key <ul><li>If you do have a naming hub you can verify with, they can say the identity has a new publickey</li><li>Contacts can &quot;vouch&quot; for a identity having a new publickey</li><li>Clients can decide to trust the new publickey based on contacts and naming hubs saying to</li><li>Also applies to stolen or compromised keys</li></ul></li><li>I believe <a href="https://iroh.computer" target="_blank" rel="noreferrer">Iroh</a> works this way</li></ul><h2 id="servers" tabindex="-1">Servers <a class="header-anchor" href="#servers" aria-label="Permalink to &quot;Servers&quot;"></a></h2><ul><li>Act as relays, merely storing messages and sending them to any clients or servers that have subscribed</li><li>May decide to publicly display messages its received <ul><li>These servers are how discovery would work</li><li>Different servers may offer unique displays, filters, etc.</li></ul></li><li>Users can send their content to any server - no authentication or account required, as the identity suffices <ul><li>Even replies can work this way - no need to know from where a given message originated</li></ul></li><li>Private servers could require some password when sending messages or subscribing to things <ul><li>Useful for a school or other entity that wants an internal social network</li></ul></li><li>Different ways to subscribe to a server&#39;s messages <ul><li>All messages the relay hears about (new relays essentially subscribe like this to some existing relay)</li><li>All messages from a specific poster ID</li><li>Any replies to a message created with a specific poster ID</li><li>Shallow subscriptions, to lighten the load when subscribing to communities</li></ul></li></ul><h2 id="content" tabindex="-1">Content <a class="header-anchor" href="#content" aria-label="Permalink to &quot;Content&quot;"></a></h2><ul><li>Protocol should dictate how to convey text, image, audio, video, and binary content</li><li>Protocol should include reacting to content with arbitrary text, including a URL <ul><li>Upvotes and downvotes are implemented with this system</li></ul></li><li>Each message contains fields for the poster&#39;s ID (public key) and a signature that verifies the content was made by that poster <ul><li>That signature serves as an ID for the message itself <ul><li>Anything can be replied to using the ID as the &quot;parent&quot; property in a new post</li></ul></li></ul></li><li>Edits are handled as replies with some flag to indicate it&#39;s updating the parent messages&#39; content <ul><li>Naturally, this reply would only be respected if it matches the same creator ID</li><li>Servers should replace the original message entirely with this one and indicate its an edited message <ul><li>Some servers will inevitably keep a full history though</li></ul></li></ul></li><li>Groups/communities are just specially flagged messages <ul><li>Posting to a community is just replying to that message</li><li>Subscribing to a community is just subscribing to that message</li><li>The original message creator effectively owns the group</li></ul></li></ul><h2 id="moderation" tabindex="-1">Moderation <a class="header-anchor" href="#moderation" aria-label="Permalink to &quot;Moderation&quot;"></a></h2><ul><li>In general, edits and delete requests are made by replying with a specially flagged message</li><li>Edit and deletion messages are ignored unless they have the correct public key and signature <ul><li>Parent messages form a hierarchy of permission - if someone replies to your message, you can send a delete request for that message</li><li>Relay owners cannot fully delete messages, but can choose to stop relaying replies etc. of messages as the server owner wishes</li></ul></li><li>Posts can be publicly reported with a specially flagged reply <ul><li>How to make anonymous reports?</li></ul></li><li>Users can send deletion or edit messages even without a matching public key, and clients (or relays) can choose to respect those messages if that public key is whitelisted as a moderator <ul><li>Messages (and by extension, groups) can have replies granting or removing permission to other public IDs at that hierarchy level</li><li>People can setup accounts with their desired heuristic for sending delete messages, such as looking at public reports or analyzing the content with AI <ul><li>This way clients can effectively customize their preferred moderation</li></ul></li></ul></li><li>Clients can also choose to add additional rules for hiding content, such as any reports by followed users</li><li>Perhaps delete messages pull double duty as public reports in and of themselves?</li></ul><h2 id="problems-to-solve" tabindex="-1">Problems to solve <a class="header-anchor" href="#problems-to-solve" aria-label="Permalink to &quot;Problems to solve&quot;"></a></h2><ul><li>No anonymity <ul><li>All upvotes, downvotes, etc. are linked to your public key</li><li>Perhaps a client could generate new keypairs for every action for anonymity, but then it&#39;d be hard to determine if such an account and action was a genuine user or a bot</li></ul></li><li>Servers could probably determine the identity of clients sending their messages to them <ul><li>A client that only ever sends messages with a specific public key is unlikely to be a server</li><li>A client that doesn&#39;t subscribe to all messages is unlikely to be a server</li></ul></li><li>Illegal material will likely be placed on the hard drive at least temporarily <ul><li>Messages will be downloaded and, even if you follow a moderator bot that looks for illegal material, there&#39;s likely to be a delay between receiving the initial message and receiving the bots delete message</li></ul></li><li>You have to download all spam messages <ul><li>For redundancy, you&#39;d likely subscribe to multiple relay servers</li><li>You cannot trust several relay servers to have identical rules on not relaying messages that don&#39;t pass whatever moderation heuristic</li><li>Therefore, the filtering out of spam has to be done by the client, after downloading it all</li></ul></li></ul></div></div></main><footer class="VPDocFooter" data-v-39a288b8 data-v-d4a0bba5><!--[--><!--]--><div class="edit-info" data-v-d4a0bba5><!----><div class="last-updated" data-v-d4a0bba5><p class="VPLastUpdated" data-v-d4a0bba5 data-v-7e05ebdb>Last updated: <time datetime="2024-06-11T01:24:22.000Z" data-v-7e05ebdb></time></p></div></div><!----></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
<script>window.__VP_HASH_MAP__=JSON.parse("{\"garden_freeform-vs-chronological-dichotomy_index.md\":\"Dd75toL7\",\"garden_guide-to-incrementals_appeal-to-developers_index.md\":\"TuQPd3Rm\",\"garden_guide-to-incrementals_what-is-content_index.md\":\"CPcgg6ty\",\"garden_activitypub_index.md\":\"DanMaaUt\",\"garden_ivy-road_index.md\":\"CQXyVNns\",\"garden_wanderstop_index.md\":\"DTpdMyo5\",\"garden_babble-buds_index.md\":\"DsQ-ysRz\",\"garden_federated-identity_index.md\":\"Bla680qg\",\"garden_fedi-v2_index.md\":\"BgcweGyn\",\"garden_commune_index.md\":\"M75DLEO4\",\"garden_freeform_index.md\":\"-KWtdFru\",\"garden_logseq_index.md\":\"D6vggIQN\",\"garden_matrix_index.md\":\"LNPgVpGv\",\"garden_my-personal-website_index.md\":\"DM_r0_4y\",\"garden_weird_index.md\":\"BLaFDJC6\",\"garden_synapse_index.md\":\"DgiE1qG4\",\"garden_my-projects_index.md\":\"COjF407h\",\"garden_guide-to-incrementals_navigating-criticism_index.md\":\"CNMRuwlX\",\"public_gamedevtree_docs_infoboxes.md\":\"u7lbf1fe\",\"garden_the-beginner-s-guide_index.md\":\"XLZaxzi-\",\"public_gamedevtree_docs_custom-tab-layouts.md\":\"DXFeTlpj\",\"public_kronos_docs_buyables.md\":\"DApk6nw5\",\"public_lit_docs_subtabs-and-microtabs.md\":\"CICoMMMb\",\"public_lit_docs_challenges.md\":\"FvqZDXVG\",\"public_kronos_docs_layer-features.md\":\"Bz9OYgri\",\"garden_opti-speech_index.md\":\"BxpJ0YGs\",\"garden_guide-to-incrementals_appeal-to-players_index.md\":\"BXCmSfkY\",\"garden_game-dev-tree_index.md\":\"DHDOIZdt\",\"garden_kronos_index.md\":\"DHd61a4u\",\"garden_fediverse_index.md\":\"DV7pCe4h\",\"public_kronos_docs_subtabs-and-microtabs.md\":\"Bqm7YUXh\",\"garden_garden-rss_index.md\":\"GBMUkoRO\",\"garden_profectus_index.md\":\"BSPMUH2E\",\"garden_cinny_index.md\":\"B3J4-EIr\",\"garden_capture-the-citadel_index.md\":\"BUHJ6rXI\",\"garden_guide-to-incrementals_index.md\":\"BLT12LIo\",\"garden_v-ecs_index.md\":\"DJJi6du9\",\"garden_forgejo_index.md\":\"DPYsTNsY\",\"garden_advent-incremental_index.md\":\"p5RrJS7f\",\"garden_social-media_index.md\":\"DP14BUn3\",\"garden_decentralized_index.md\":\"CEHxkhUr\",\"garden_chat-glue_index.md\":\"GqpWspsb\",\"garden_incremental-social_index.md\":\"3WO3QvHs\",\"garden_digital-gardens_index.md\":\"BuqDyDTZ\",\"public_lit_docs_trees-and-tree-customization.md\":\"CWsN4p6Q\",\"garden_mbin_index.md\":\"GY_oPyY9\",\"garden_the-small-web_index.md\":\"CuXptpgo\",\"garden_chronological_index.md\":\"ChIwCT8E\",\"guide-to-incrementals_index.md\":\"DKlWf0lO\",\"public_gamedevtree_docs_updating-tmt.md\":\"Cym0rRYz\",\"garden_davey-wreden_index.md\":\"0uk6tkMa\",\"public_gamedevtree_readme.md\":\"BcJ-DaYW\",\"public_kronos_old things_2.0-format-changes.md\":\"B6DTr0jJ\",\"garden_nostr_index.md\":\"Bj0gHaYO\",\"public_kronos_readme.md\":\"DOcyAoHv\",\"guide-to-incrementals_ludology_content_index.md\":\"DrX3RUub\",\"public_lit_readme.md\":\"pVsJJuH2\",\"garden_the-cozy-web_index.md\":\"BNzQg6VV\",\"public_kronos_docs_grids.md\":\"3_YSBuDO\",\"public_kronos_docs_infoboxes.md\":\"DpZxLNRR\",\"index.md\":\"9F__5BK6\",\"public_kronos_docs_updating-tmt.md\":\"B2tZSHuA\",\"public_gamedevtree_docs_!general-info.md\":\"60si-HlW\",\"public_kronos_docs_clickables.md\":\"BzXBLTUl\",\"public_gamedevtree_docs_bars.md\":\"BOkZNfjK\",\"public_gamedevtree_docs_buyables.md\":\"Bdb3l1uw\",\"public_lit_docs_updating-tmt.md\":\"K90Uh1tC\",\"public_kronos_docs_milestones.md\":\"D2as2Rdw\",\"public_gamedevtree_docs_achievements.md\":\"Byb7DjwU\",\"public_lit_docs_main-mod-info.md\":\"CUo3Y8ir\",\"guide-to-incrementals_ludology_definition_index.md\":\"DKOCC4rn\",\"guide-to-incrementals_ludology_appeal-developers_index.md\":\"B3Lh8HIP\",\"public_lit_changelog.md\":\"Dj7fgFUm\",\"guide-to-incrementals_ludology_appeal-gamers_index.md\":\"CjswzOO0\",\"guide-to-incrementals_design_criticism_index.md\":\"f96IunmV\",\"garden_planar-pioneers_index.md\":\"C2tqrMsQ\",\"public_lit_old things_2.0-format-changes.md\":\"y8RAczqh\",\"garden_vitepress_index.md\":\"H4_D67q2\",\"public_kronos_docs_!general-info.md\":\"DvOjN6Rt\",\"public_lit_docs_milestones.md\":\"DKpEd4GK\",\"public_gamedevtree_docs_getting-started.md\":\"53r6S_jZ\",\"public_gamedevtree_2.0-format-changes.md\":\"BJWVbIw2\",\"garden_this-knowledge-hub_index.md\":\"0kSOQcYg\",\"garden_atproto_index.md\":\"CiHxa0oR\",\"public_gamedevtree_docs_upgrades.md\":\"hegmaS21\",\"public_gamedevtree_docs_layer-features.md\":\"BBomRnin\",\"public_gamedevtree_docs_main-mod-info.md\":\"CzntOXuT\",\"public_gamedevtree_changelog.md\":\"yaSdB86a\",\"public_gamedevtree_docs_clickables.md\":\"CYP_r85U\",\"public_kronos_changelog.md\":\"paCgtsXh\",\"garden_dice-armor_index.md\":\"C0j8r9U5\",\"public_lit_docs_getting-started.md\":\"MYuuOf2Q\",\"garden_guide-to-incrementals_defining-the-genre_index.md\":\"CiiOiMfK\",\"public_kronos_docs_achievements.md\":\"B2ZLvQuE\",\"changelog_index.md\":\"Bq0zUXhk\",\"public_kronos_docs_upgrades.md\":\"5OAqntPP\",\"public_kronos_docs_getting-started.md\":\"CQfW9cEX\",\"public_lit_docs_clickables.md\":\"D9eesbmM\",\"public_kronos_docs_basic-layer-breakdown.md\":\"MMKYyoj1\",\"public_kronos_docs_trees-and-tree-customization.md\":\"DZzDglty\",\"public_kronos_docs_particles.md\":\"DkE7U5GT\",\"public_lit_docs_upgrades.md\":\"DnP9Av1u\",\"public_gamedevtree_docs_basic-layer-breakdown.md\":\"Lt_Kak5C\",\"public_lit_docs_achievements.md\":\"z7uTtaPO\",\"garden_open-source_index.md\":\"Ct6LFmg2\",\"public_gamedevtree_docs_subtabs-and-microtabs.md\":\"D3v8JvXX\",\"public_lit_docs_buyables.md\":\"DilfnDIO\",\"garden_webrings_index.md\":\"CcdnNwag\",\"public_kronos_docs_main-mod-info.md\":\"ByNe_g0w\",\"public_lit_docs_infoboxes.md\":\"Be2LqzDD\",\"public_gamedevtree_docs_challenges.md\":\"BsXIWoTI\",\"public_lit_docs_basic-layer-breakdown.md\":\"CqbgegVm\",\"public_kronos_docs_challenges.md\":\"Cn9Xc7xE\",\"public_lit_docs_!general-info.md\":\"CDTQvlu3\",\"public_lit_docs_custom-tab-layouts.md\":\"BYNeuJZ1\",\"public_kronos_docs_custom-tab-layouts.md\":\"BbyIoWME\",\"public_gamedevtree_docs_milestones.md\":\"Phzy1O6H\",\"public_lit_docs_layer-features.md\":\"BSLdBpI-\",\"public_kronos_docs_bars.md\":\"JgNsk6mY\",\"public_lit_docs_bars.md\":\"hc6LT70W\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"The Paper Pilot\",\"description\":\"The Paper Pilot Personal Website\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"outline\":\"deep\",\"nav\":[{\"text\":\"Profectus\",\"link\":\"https://moddingtree.com\"},{\"text\":\"Incremental Social\",\"link\":\"https://incremental.social\"}],\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/thepaperpilot\"},{\"icon\":\"linkedin\",\"link\":\"https://www.linkedin.com/pub/anthony-lawn/a9/a98/2\"},{\"icon\":{\"svg\":\"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:cc=\\\"http://creativecommons.org/ns#\\\" xmlns:dc=\\\"http://purl.org/dc/elements/1.1/\\\" xmlns:rdf=\\\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\\\" version=\\\"1.1\\\" viewBox=\\\"0 0 27.9 32\\\" style=\\\"background-color:white\\\">\\n <g xmlns=\\\"http://www.w3.org/2000/svg\\\" transform=\\\"translate(-.095 .005)\\\" fill=\\\"#040404\\\">\\n <path d=\\\"m27.1 31.2v-30.5h-2.19v-0.732h3.04v32h-3.04v-0.732z\\\"/>\\n <path d=\\\"m8.23 10.4v1.54h0.044c0.385-0.564 0.893-1.03 1.49-1.37 0.58-0.323 1.25-0.485 1.99-0.485 0.72 0 1.38 0.14 1.97 0.42 0.595 0.279 1.05 0.771 1.36 1.48 0.338-0.5 0.796-0.941 1.38-1.32 0.58-0.383 1.27-0.574 2.06-0.574 0.602 0 1.16 0.074 1.67 0.22 0.514 0.148 0.954 0.383 1.32 0.707 0.366 0.323 0.653 0.746 0.859 1.27 0.205 0.522 0.308 1.15 0.308 1.89v7.63h-3.13v-6.46c0-0.383-0.015-0.743-0.044-1.08-0.0209-0.307-0.103-0.607-0.242-0.882-0.133-0.251-0.336-0.458-0.584-0.596-0.257-0.146-0.606-0.22-1.05-0.22-0.44 0-0.796 0.085-1.07 0.253-0.272 0.17-0.485 0.39-0.639 0.662-0.159 0.287-0.264 0.602-0.308 0.927-0.052 0.347-0.078 0.697-0.078 1.05v6.35h-3.13v-6.4c0-0.338-7e-3 -0.673-0.021-1-0.0114-0.314-0.0749-0.623-0.188-0.916-0.108-0.277-0.3-0.512-0.55-0.673-0.258-0.168-0.636-0.253-1.14-0.253-0.198 0.0083-0.394 0.042-0.584 0.1-0.258 0.0745-0.498 0.202-0.705 0.374-0.228 0.184-0.422 0.449-0.584 0.794-0.161 0.346-0.242 0.798-0.242 1.36v6.62h-3.13v-11.4z\\\"/>\\n <path d=\\\"m0.936 0.732v30.5h2.19v0.732h-3.04v-32h3.03v0.732z\\\"/>\\n </g>\\n </svg>\"},\"link\":\"https://matrix.to/#/@thepaperpilot:incremental.social\"},{\"icon\":{\"svg\":\"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\"?>\\n<svg\\n version=\\\"1.1\\\"\\n viewBox=\\\"0 0 334.73599 334.736\\\"\\n id=\\\"svg40\\\"\\n sodipodi:docname=\\\"logo_condensed.svg\\\"\\n inkscape:version=\\\"1.3.1 (5ab75fa947, 2023-11-03)\\\"\\n width=\\\"334.73599\\\"\\n height=\\\"334.73599\\\"\\n inkscape:export-filename=\\\"logo_condensed_forgejo.png\\\"\\n inkscape:export-xdpi=\\\"96\\\"\\n inkscape:export-ydpi=\\\"96\\\"\\n xmlns:inkscape=\\\"http://www.inkscape.org/namespaces/inkscape\\\"\\n xmlns:sodipodi=\\\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n xmlns:svg=\\\"http://www.w3.org/2000/svg\\\">\\n <defs\\n id=\\\"defs44\\\" />\\n <sodipodi:namedview\\n id=\\\"namedview42\\\"\\n pagecolor=\\\"#505050\\\"\\n bordercolor=\\\"#eeeeee\\\"\\n borderopacity=\\\"1\\\"\\n inkscape:pageshadow=\\\"0\\\"\\n inkscape:pageopacity=\\\"0\\\"\\n inkscape:pagecheckerboard=\\\"0\\\"\\n showgrid=\\\"false\\\"\\n inkscape:zoom=\\\"2.8284271\\\"\\n inkscape:cx=\\\"87.327687\\\"\\n inkscape:cy=\\\"132.40574\\\"\\n inkscape:window-width=\\\"2560\\\"\\n inkscape:window-height=\\\"1369\\\"\\n inkscape:window-x=\\\"-8\\\"\\n inkscape:window-y=\\\"-8\\\"\\n inkscape:window-maximized=\\\"1\\\"\\n inkscape:current-layer=\\\"g4\\\"\\n inkscape:showpageshadow=\\\"0\\\"\\n inkscape:deskcolor=\\\"#d1d1d1\\\"\\n showguides=\\\"true\\\">\\n <sodipodi:guide\\n position=\\\"264.97068,-61.5051\\\"\\n orientation=\\\"1,0\\\"\\n id=\\\"guide1\\\"\\n inkscape:locked=\\\"false\\\" />\\n <sodipodi:guide\\n position=\\\"93.001002,77.044749\\\"\\n orientation=\\\"1,0\\\"\\n id=\\\"guide2\\\"\\n inkscape:locked=\\\"false\\\" />\\n <sodipodi:guide\\n position=\\\"109.56249,95.005809\\\"\\n orientation=\\\"1,0\\\"\\n id=\\\"guide3\\\"\\n inkscape:locked=\\\"false\\\" />\\n <sodipodi:guide\\n position=\\\"163.99999,77.505809\\\"\\n orientation=\\\"1,0\\\"\\n id=\\\"guide4\\\"\\n inkscape:locked=\\\"false\\\" />\\n <sodipodi:guide\\n position=\\\"179,1.5058096\\\"\\n orientation=\\\"1,0\\\"\\n id=\\\"guide5\\\"\\n inkscape:locked=\\\"false\\\" />\\n </sodipodi:namedview>\\n <g\\n id=\\\"g1\\\"\\n transform=\\\"translate(-1,84.932692)\\\">\\n <path\\n fill=\\\"#6b438b\\\"\\n d=\\\"m 271.24983,105.65061 q -0.36,4.08 -0.31,8.47 0.05,4.56 -4.49,8.19 -9.11,7.28 -17.84,-0.35 c -5.3,-4.65 -3.99,-10.34 -4.42,-16.25 -11.33,-3.3 -21.65,-12.470005 -22.8,-24.590005 q -0.53,-5.59 -0.95,-11.21 -0.04,-0.52 -0.53,-0.64 c -4.87,-1.23 -7.99,-2.08 -10.29,-6.94 -3.9,-8.23 0.79,-15.35 8.92,-18.12 a 0.39,0.4 77.9 0 0 0.27,-0.41 c -0.74,-8.02 -1.4,-15.08 1.56,-22.79 3.11,-8.09 9.57,-14.2599996 17.53,-17.6199996 q 4.11,-1.73 10.44,-2.07 8.68,-0.46000001 17.4,-0.26 16.85,0.37 26.28,13.5899996 c 6.43,9.02 5.96,18.48 5.03,29.16 q -0.05,0.51 0.45,0.64 c 13.7,3.61 12.56,22.82 -1.42,24.78 a 0.71,0.71 0 0 0 -0.61,0.65 c -0.38,5.39 -0.17,11.34 -2.1,16.46 q -5.7,15.160005 -22.12,19.310005 z\\\"\\n id=\\\"path28\\\"\\n style=\\\"display:inline\\\" />\\n <path\\n fill=\\\"#eceff4\\\"\\n d=\\\"m 142.39,41.700605 -31,11.57 a 0.62,0.61 79.8 0 1 -0.83,-0.58 l 0.01,-19.31 q 0,-0.55 0.51,-0.74 23.03,-8.68 46.02,-17.25 c 2.57,-0.96 4.78,-0.76 7.42,-0.75 a 0.49,0.49 0 0 1 0.49,0.49 V 147.45061 a 0.79,0.79 0 0 1 -0.8,0.79 l -19.99,-0.01 q -1.17,0 -1.17,-1.16 V 42.160605 a 0.49,0.49 0 0 0 -0.66,-0.46 z\\\"\\n id=\\\"path30\\\"\\n style=\\\"display:inline\\\" />\\n <path\\n fill=\\\"#eceff4\\\"\\n d=\\\"m 59.21,74.480605 h 33.95 a 0.84,0.84 0 0 1 0.84,0.84 l -0.01,18.96 a 0.84,0.84 0 0 1 -0.84,0.84 l -33.88,0.03 a 0.84,0.84 0 0 0 -0.84,0.84 l -0.08,38.580005 a 0.84,0.84 0 0 1 -0.84,0.84 l -20.11,-0.01 a 0.84,0.84 0 0 1 -0.84,-0.84 L 36.55,95.980605 a 0.84,0.84 0 0 0 -0.84,-0.84 H 1.84 a 0.84,0.84 0 0 1 -0.84,-0.84 l 0.02,-19.02 a 0.84,0.84 0 0 1 0.84,-0.84 l 33.86,0.02 a 0.84,0.84 0 0 0 0.84,-0.84 v -35.79 a 0.84,0.84 0 0 1 0.84,-0.84 l 20.13,-0.02 a 0.84,0.84 0 0 1 0.84,0.84 v 35.83 a 0.84,0.84 0 0 0 0.84,0.84 z\\\"\\n id=\\\"path32\\\"\\n style=\\\"display:inline\\\" />\\n <path\\n fill=\\\"#533566\\\"\\n d=\\\"m 244.18983,105.71061 c 0.43,5.91 -0.88,11.6 4.42,16.25 q 8.73,7.63 17.84,0.35 4.54,-3.63 4.49,-8.19 -0.05,-4.39 0.31,-8.47 24.6,4 42.34,20.72 l -0.18,37.49 -110.93,0.01 -0.09,-37.61 q 17.53,-16.43 41.8,-20.55 z\\\"\\n id=\\\"path34\\\"\\n style=\\\"display:inline\\\" />\\n <path\\n fill=\\\"#6b438b\\\"\\n d=\\\"m 202.38983,126.26061 0.09,37.61 -21.38,-0.49 a 1.13,1.13 0 0 1 -1.04,-1.49 q 7.21,-21.29 22.33,-35.63 z\\\"\\n id=\\\"path36\\\"\\n style=\\\"display:inline\\\" />\\n <path\\n fill=\\\"#6b438b\\\"\\n d=\\\"m 313.58983,126.37061 q 12.71,12.03 19.9,29.52 1.79,4.36 2.23,6.86 0.11,0.61 -0.51,0.62 l -21.8,0.49 z\\\"\\n id=\\\"path38\\\"\\n style=\\\"display:inline\\\" />\\n <g\\n transform=\\\"matrix(0.77226665,0,0,0.77226665,154.89692,5.2164554)\\\"\\n id=\\\"g4\\\"\\n style=\\\"display:none\\\">\\n <path\\n d=\\\"M 58,168 V 70 a 50,50 0 0 1 50,-50 h 20\\\"\\n class=\\\"orange\\\"\\n id=\\\"path1\\\"\\n style=\\\"fill:none;stroke:#ff6600;stroke-width:25\\\" />\\n <path\\n d=\\\"m 58,168 v -30 a 50,50 0 0 1 50,-50 h 20\\\"\\n class=\\\"red\\\"\\n id=\\\"path2-3\\\"\\n style=\\\"fill:none;stroke:#d40000;stroke-width:25\\\" />\\n <circle\\n cx=\\\"142\\\"\\n cy=\\\"20\\\"\\n r=\\\"18\\\"\\n class=\\\"orange\\\"\\n id=\\\"circle2\\\"\\n style=\\\"fill:none;stroke:#ff6600;stroke-width:15\\\" />\\n <circle\\n cx=\\\"142\\\"\\n cy=\\\"88\\\"\\n r=\\\"18\\\"\\n class=\\\"red\\\"\\n id=\\\"circle3\\\"\\n style=\\\"fill:none;stroke:#d40000;stroke-width:15\\\" />\\n <circle\\n cx=\\\"58\\\"\\n cy=\\\"180\\\"\\n r=\\\"18\\\"\\n class=\\\"red\\\"\\n id=\\\"circle4\\\"\\n style=\\\"fill:none;stroke:#d40000;stroke-width:15\\\" />\\n </g>\\n </g>\\n</svg>\\n\"},\"link\":\"https://incremental.social/u/thepaperpilot\"}],\"sidebar\":[{\"text\":\"Recommended Pages\",\"items\":[{\"text\":\"My Projects\",\"link\":\"/garden/my-projects\"},{\"text\":\"Guide to Incrementals\",\"link\":\"/garden/guide-to-incrementals\"},{\"text\":\"The Small Web\",\"link\":\"/garden/the-small-web\"},{\"text\":\"Fedi v2\",\"link\":\"/garden/fedi-v2\"}]},{\"text\":\"Changelog\",\"link\":\"/changelog\"}]},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":true}");</script>
</body>
</html>