PageSourceSearch

https://jesssullivan.github.io/blog

html jesssullivan.github.io collected 2026-10-03 09:22:55 UTC 115,034 bytes, 93 lines download raw bytes

1<!doctype html>
2<html lang="en" data-theme="pine" data-mode="light">
3	<head>
4		<meta charset="utf-8" />
5		<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
6		<meta name="application-name" content="transscendsurvival.org" />
7		<meta name="apple-mobile-web-app-title" content="transscendsurvival.org" />
8		<meta name="mobile-web-app-capable" content="yes" />
9		<meta name="apple-mobile-web-app-capable" content="yes" />
10		<meta name="apple-mobile-web-app-status-bar-style" content="default" />
11		<meta name="theme-color" content="#0f766e" />
12		<meta name="theme-color" media="(prefers-color-scheme: light)" content="#f8fafc" />
13		<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0f172a" />
14		<meta name="msapplication-TileColor" content="#0f766e" />
15		<meta name="msapplication-TileImage" content="./mstile-144x144.png" />
16		<meta name="msapplication-config" content="./browserconfig.xml" />
17		<link rel="icon" href="./favicon.ico" sizes="any" />
18		<link rel="icon" type="image/svg+xml" href="./favicon.svg" />
19		<link rel="icon" type="image/png" sizes="48x48" href="./favicon-48x48.png" />
20		<link rel="icon" type="image/png" sizes="32x32" href="./favicon-32x32.png" />
21		<link rel="icon" type="image/png" sizes="16x16" href="./favicon-16x16.png" />
22		<link rel="apple-touch-icon" sizes="180x180" href="./apple-touch-icon.png" />
23		<link rel="mask-icon" href="./safari-pinned-tab.svg" color="#0f766e" />
24		<link rel="manifest" href="./site.webmanifest" />
25		<meta
26			http-equiv="Content-Security-Policy"
27			content="default-src 'self'; script-src 'self' 'unsafe-inline' https://giscus.app; style-src 'self' 'unsafe-inline' https://giscus.app; img-src 'self' data: https:; font-src 'self'; frame-src 'self' https://w.soundcloud.com https://www.youtube-nocookie.com https://giscus.app; connect-src 'self' https://*.pagefind.app https://tinyland.dev https://hub.tinyland.dev; media-src 'self' https:"
28		/>
29		<meta name="referrer" content="strict-origin-when-cross-origin" />
30		<link rel="alternate" type="application/feed+json" title="transscendsurvival.org JSON Feed" href="/feed.json" />
31		<link rel="alternate" type="application/rss+xml" title="RSS" href="/feed.xml" />
32		
32<script>
33			(function () {
34				var m = localStorage.getItem('color-mode');
35				if (m !== 'dark' && m !== 'light')
36					m = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
37				document.documentElement.setAttribute('data-mode', m);
38				document.documentElement.style.colorScheme = m;
39				var t = localStorage.getItem('skeleton-theme');
40				if (t) document.documentElement.setAttribute('data-theme', t);
41			})();
42		</script>
42
43		<link href="./_app/immutable/entry/start.Cel6CUMU.js" rel="modulepreload">
44		<link href="./_app/immutable/chunks/bNTgRhhB.js" rel="modulepreload">
45		<link href="./_app/immutable/chunks/j-Ks6fqx.js" rel="modulepreload">
46		<link href="./_app/immutable/chunks/BuFlayix.js" rel="modulepreload">
47		<link href="./_app/immutable/entry/app.BpTExKld.js" rel="modulepreload">
48		<link href="./_app/immutable/chunks/kNaey6uv.js" rel="modulepreload">
49		<link href="./_app/immutable/chunks/xihTtKlq.js" rel="modulepreload">
50		<link href="./_app/immutable/nodes/0.DlUq6k-F.js" rel="modulepreload">
51		<link href="./_app/immutable/chunks/yBD7d_jl.js" rel="modulepreload">
52		<link href="./_app/immutable/chunks/C-tf1LUe.js" rel="modulepreload">
53		<link href="./_app/immutable/chunks/BmPMefeV.js" rel="modulepreload">
54		<link href="./_app/immutable/chunks/Bbu1azlP.js" rel="modulepreload">
55		<link href="./_app/immutable/nodes/6.m2TJLSYX.js" rel="modulepreload">
56		<link href="./_app/immutable/chunks/DdiQlvrq.js" rel="modulepreload">
57		<link href="./_app/immutable/chunks/Bkh6_AxQ.js" rel="modulepreload">
58		<link href="./_app/immutable/chunks/7wtli9SS.js" rel="modulepreload">
59		<!--12qhfyh--><!---->
59<script type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","name":"transscendsurvival.org","url":"https://transscendsurvival.org","author":{"@type":"Person","name":"Jess Sullivan","url":"https://github.com/Jesssullivan"},"description":"Blog and portfolio by Jess Sullivan — full stack engineer, musician, and birdwatcher."}</script>
59<!----><!----><!--u4k2t--><meta name="description" content="Blog posts by Jess Sullivan — hardware, FOSS, birding, ecology, and more."/> <meta property="og:title" content="Blog | transscendsurvival.org"/> <meta property="og:description" content="Blog posts by Jess Sullivan — hardware, FOSS, birding, ecology, and more."/> <meta property="og:type" content="website"/> <meta property="og:url" content="https://transscendsurvival.org/blog"/> <meta name="twitter:card" content="summary"/> <link rel="canonical" href="https://transscendsurvival.org/blog"/><!----><title>Blog | transscendsurvival.org</title>
60		<link href="./_app/immutable/assets/0.Buwdld-D.css" rel="stylesheet">
61	</head>
62	<body data-sveltekit-preload-data="hover">
63		<div style="display: contents"><!--[--><!--[0--><!--[--><!--[-1--><!--]--> <div class="min-h-screen flex flex-col relative"><a href="#main-content" class="sr-only focus:not-sr-only focus:absolute focus:z-50 focus:top-2 focus:left-2 focus:px-4 focus:py-2 focus:bg-primary-500 focus:text-white focus:text-sm focus:font-semibold">Skip to content</a> <!--[-1--><header data-scope="app-bar" data-part="root" class=" shadow-sm"><!--[--><!--[-1--><div data-scope="app-bar" data-part="toolbar" class="grid-cols-[auto_1fr_auto] px-4 py-2"><!--[--><!--[-1--><nav data-scope="app-bar" data-part="lead"><a href="/blog" class="text-lg font-bold font-heading-hero hover:text-primary-500 transition-colors whitespace-nowrap tracking-wide">transscendsurvival.org</a><!----></nav><!--]--><!--]--> <!--[--><!--[-1--><div data-scope="app-bar" data-part="headline"><!----></div><!--]--><!--]--> <!--[--><!--[-1--><nav data-scope="app-bar" data-part="trail"><nav class="hidden md:flex items-center gap-3 text-sm"><!--[--><a href="/blog" class="hover:text-primary-500 transition-colors text-primary-500 font-semibold" aria-label="Blog">Blog</a><a href="/photography" class="hover:text-primary-500 transition-colors " aria-label="Photography">Photography</a><a href="/music" class="hover:text-primary-500 transition-colors " aria-label="Music">Music</a><a href="/making" class="hover:text-primary-500 transition-colors " aria-label="Making">Making</a><a href="/signal-boosts" class="hover:text-primary-500 transition-colors " aria-label="Signal Boosts">Signal Boosts</a><a href="/cv" class="hover:text-primary-500 transition-colors " aria-label="CV">CV</a><a href="/about" class="hover:text-primary-500 transition-colors " aria-label="About">About</a><!--]--> <a href="https://github.com/Jesssullivan" class="hover:text-primary-500 transition-colors" target="_blank" rel="noopener" aria-label="GitHub profile">GitHub</a> <!--$s1--><!--[--><!--[-1--><button data-scope="popover" data-part="trigger" type="button" id="popover:s1:trigger" data-ownedby="s1" aria-haspopup="dialog" aria-expanded="false" data-state="closed" aria-controls="popover:s1:content" class="p-1.5 hover:bg-surface-200-800 transition-colors " aria-label="Theme settings" data-testid="theme-switcher-trigger"><svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 21a4 4 0 01-4-4c0-1.305.835-2.416 2-2.828V11a7 7 0 1114 0v3.172A3.001 3.001 0 0121 17a4 4 0 01-4 4H7z"></path></svg><!----></button><!--]--><!--]--> <!--[0--><!--[--><!--[-1--><div id="popover:s1:popper" data-scope="popover" data-part="positioner" style="position:absolute;isolation:isolate;min-width:max-content;pointer-events:none;top:0px;left:0px;transform:translate3d(0, -100vh, 0);z-index:var(--z-index);" class="z-50"><!--[-1--><!--]--> <!--[--><!--[-1--><div data-scope="popover" data-part="content" id="popover:s1:content" tabindex="-1" role="dialog" hidden="" data-state="closed" aria-labelledby="popover:s1:title" aria-describedby="popover:s1:desc" class="bg-surface-50 dark:bg-surface-900 border border-surface-300-700 shadow-lg py-2 min-w-[200px] max-w-[20rem] max-h-[calc(100vh-5rem)] overflow-y-auto overscroll-contain origin-top-right transform-gpu opacity-0 scale-95 transition-[opacity,transform] duration-150 ease-out data-[state=open]:opacity-100 data-[state=open]:scale-100 motion-reduce:transition-none" data-testid="theme-switcher-content"><!--[-1--><!--]--> <p class="px-3 py-1 text-xs text-surface-400 uppercase tracking-wide font-semibold">Mode</p> <!--[--><button aria-label="Set color mode to light" class="w-full px-3 py-1.5 text-left text-sm hover:bg-surface-200-800 transition-colors capitalize flex items-center justify-between ">light <!--[-1--><!--]--></button><button aria-label="Set color mode to dark" class="w-full px-3 py-1.5 text-left text-sm hover:bg-surface-200-800 transition-colors capitalize flex items-center justify-between ">dark <!--[-1--><!--]--></button><button aria-label="Set color mode to system" class="w-full px-3 py-1.5 text-left text-sm hover:bg-surface-200-800 transition-colors capitalize flex items-center justify-between text-primary-500 font-semibold">system <!--[0--><svg xmlns="http://www.w3.org/2000/svg" class="h-3.5 w-3.5" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path></svg><!--]--></button><!--]--> <div class="border-t border-surface-300-700 my-1.5"></div> <p class="px-3 py-1 text-xs text-surface-400 uppercase tracking-wide font-semibold">Theme</p> <!--[--><button aria-label="Set color theme to TSS" class="w-full px-3 py-1.5 text-left text-sm hover:bg-surface-200-800 transition-colors flex items-center gap-2 text-primary-500 font-semibold"><span class="flex gap-0.5"><!--[--><span class="w-2.5 h-2.5 rounded-full border border-surface-300-700" style="background: #8a9a5b"></span><span class="w-2.5 h-2.5 rounded-full border border-surface-300-700" style="background: #9b4dca"></span><span class="w-2.5 h-2.5 rounded-full border border-surface-300-700" style="background: #e2e8f0"></span><!--]--></span> TSS <!--[0--><svg xmlns="http://www.w3.org/2000/svg" class="h-3.5 w-3.5 ml-auto" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path></svg><!--]--></button><button aria-label="Set color theme to Rose" class="w-full px-3 py-1.5 text-left text-sm hover:bg-surface-200-800 transition-colors flex items-center gap-2 "><span class="flex gap-0.5"><!--[--><span class="w-2.5 h-2.5 rounded-full border border-surface-300-700" style="background: #fb7185"></span><span class="w-2.5 h-2.5 rounded-full border border-surface-300-700" style="background: #fdba74"></span><span class="w-2.5 h-2.5 rounded-full border border-surface-300-700" style="background: #a78bfa"></span><!--]--></span> Rose <!--[-1--><!--]--></button><button aria-label="Set color theme to Catppuccin" class="w-full px-3 py-1.5 text-left text-sm hover:bg-surface-200-800 transition-colors flex items-center gap-2 "><span class="flex gap-0.5"><!--[--><span class="w-2.5 h-2.5 rounded-full border border-surface-300-700" style="background: #8839ef"></span><span class="w-2.5 h-2.5 rounded-full border border-surface-300-700" style="background: #fe640b"></span><span class="w-2.5 h-2.5 rounded-full border border-surface-300-700" style="background: #40a02b"></span><!--]--></span> Catppuccin <!--[-1--><!--]--></button><button aria-label="Set color theme to Goth" class="w-full px-3 py-1.5 text-left text-sm hover:bg-surface-200-800 transition-colors flex items-center gap-2 "><span class="flex gap-0.5"><!--[--><span class="w-2.5 h-2.5 rounded-full border border-surface-300-700" style="background: #E40303"></span><span class="w-2.5 h-2.5 rounded-full border border-surface-300-700" style="background: #FF8C00"></span><span class="w-2.5 h-2.5 rounded-full border border-surface-300-700" style="background: #732982"></span><!--]--></span> Goth <!--[-1--><!--]--></button><button aria-label="Set color theme to xoxd" class="w-full px-3 py-1.5 text-left text-sm hover:bg-surface-200-800 transition-colors flex items-center gap-2 "><span class="flex gap-0.5"><!--[--><span class="w-2.5 h-2.5 rounded-full border border-surface-300-700" style="background: #5bcefa"></span><span class="w-2.5 h-2.5 rounded-full border border-surface-300-700" style="background: #f5a9b8"></span><span class="w-2.5 h-2.5 rounded-full border border-surface-300-700" style="background: #ffffff"></span><!--]--></span> xoxd <!--[-1--><!--]--></button><!--]--><!----></div><!--]--><!--]--><!----></div><!--]--><!--]--><!----><!--]--><!----><!----><!----></nav> <!--$s2--><!--[--><!--[-1--><button data-scope="dialog" data-part="trigger" id="dialog:s2:trigger" data-ownedby="s2" aria-haspopup="dialog" type="button" aria-expanded="false" data-state="closed" aria-controls="dialog:s2:content" 
63class="md:hidden p-2 hover:bg-surface-200-800" aria-label="Open navigation"><svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"></path></svg><!----></button><!--]--><!--]--> <!--[--><!--[-1--><div data-scope="dialog" data-part="backdrop" hidden="" id="dialog:s2:backdrop" data-state="closed" class="drawer-backdrop"></div><!--]--><!--]--> <!--[--><!--[-1--><div data-scope="dialog" data-part="positioner" id="dialog:s2:positioner" style="pointer-events:none;" class="drawer-positioner"><!--[--><!--[-1--><div data-scope="dialog" data-part="content" role="dialog" hidden="" id="dialog:s2:content" tabindex="-1" data-state="closed" aria-modal="true" aria-labelledby="dialog:s2:title" aria-describedby="dialog:s2:description" style="" class="drawer-content"><div class="flex items-center justify-end px-4 py-3 border-b border-surface-300-700"><!--[--><!--[-1--><button data-scope="dialog" data-part="close-trigger" id="dialog:s2:close" type="button" class="p-2 hover:bg-surface-200-800" aria-label="Close navigation"><svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path></svg><!----></button><!--]--><!--]--></div> <!--[-1--><div data-scope="navigation" data-part="root" data-layout="sidebar"><!--[--><!--[-1--><div data-scope="navigation" data-part="content" data-layout="sidebar"><!--[--><!--[-1--><div data-scope="navigation" data-part="menu" data-layout="sidebar"><!--[--><!--[--><!--[-1--><a data-scope="navigation" data-part="trigger-anchor" data-layout="sidebar" href="/blog" class="preset-tonal-primary"><!--[--><!--[-1--><span data-scope="navigation" data-part="trigger-text" data-layout="sidebar"><!---->Blog<!----></span><!--]--><!--]--><!----></a><!--]--><!--]--><!--[--><!--[-1--><a data-scope="navigation" data-part="trigger-anchor" data-layout="sidebar" href="/photography" class=""><!--[--><!--[-1--><span data-scope="navigation" data-part="trigger-text" data-layout="sidebar"><!---->Photography<!----></span><!--]--><!--]--><!----></a><!--]--><!--]--><!--[--><!--[-1--><a data-scope="navigation" data-part="trigger-anchor" data-layout="sidebar" href="/music" class=""><!--[--><!--[-1--><span data-scope="navigation" data-part="trigger-text" data-layout="sidebar"><!---->Music<!----></span><!--]--><!--]--><!----></a><!--]--><!--]--><!--[--><!--[-1--><a data-scope="navigation" data-part="trigger-anchor" data-layout="sidebar" href="/making" class=""><!--[--><!--[-1--><span data-scope="navigation" data-part="trigger-text" data-layout="sidebar"><!---->Making<!----></span><!--]--><!--]--><!----></a><!--]--><!--]--><!--[--><!--[-1--><a data-scope="navigation" data-part="trigger-anchor" data-layout="sidebar" href="/signal-boosts" class=""><!--[--><!--[-1--><span data-scope="navigation" data-part="trigger-text" data-layout="sidebar"><!---->Signal Boosts<!----></span><!--]--><!--]--><!----></a><!--]--><!--]--><!--[--><!--[-1--><a data-scope="navigation" data-part="trigger-anchor" data-layout="sidebar" href="/cv" class=""><!--[--><!--[-1--><span data-scope="navigation" data-part="trigger-text" data-layout="sidebar"><!---->CV<!----></span><!--]--><!--]--><!----></a><!--]--><!--]--><!--[--><!--[-1--><a data-scope="navigation" data-part="trigger-anchor" data-layout="sidebar" href="/about" class=""><!--[--><!--[-1--><span data-scope="navigation" data-part="trigger-text" data-layout="sidebar"><!---->About<!----></span><!--]--><!--]--><!----></a><!--]--><!--]--><!--]--> <!--[--><!--[-1--><a data-scope="navigation" data-part="trigger-anchor" data-layout="sidebar" href="https://github.com/Jesssullivan" target="_blank" rel="noopener"><!--[--><!--[-1--><span data-scope="navigation" data-part="trigger-text" data-layout="sidebar"><!---->GitHub<!----></span><!--]--><!--]--><!----></a><!--]--><!--]--><!----></div><!--]--><!--]--><!----></div><!--]--><!--]--> <!--[--><!--[-1--><footer data-scope="navigation" data-part="footer" data-layout="sidebar"><div class="w-full space-y-3"><div class="flex gap-2"><!--[--><button aria-label="Set color mode to light" class="flex-1 py-1.5 text-center text-sm hover:bg-surface-200-800 transition-colors capitalize ">light</button><button aria-label="Set color mode to dark" class="flex-1 py-1.5 text-center text-sm hover:bg-surface-200-800 transition-colors capitalize ">dark</button><button aria-label="Set color mode to system" class="flex-1 py-1.5 text-center text-sm hover:bg-surface-200-800 transition-colors capitalize text-primary-500 font-semibold">system</button><!--]--></div> <div class="flex flex-wrap gap-1.5"><!--[--><button aria-label="Set color theme to TSS" class="px-2 py-1 text-xs hover:bg-surface-200-800 transition-colors flex items-center gap-1 text-primary-500 font-semibold ring-1 ring-primary-500"><span class="flex gap-0.5"><!--[--><span class="w-2 h-2 rounded-full" style="background: #8a9a5b"></span><span class="w-2 h-2 rounded-full" style="background: #9b4dca"></span><span class="w-2 h-2 rounded-full" style="background: #e2e8f0"></span><!--]--></span> TSS</button><button aria-label="Set color theme to Rose" class="px-2 py-1 text-xs hover:bg-surface-200-800 transition-colors flex items-center gap-1 "><span class="flex gap-0.5"><!--[--><span class="w-2 h-2 rounded-full" style="background: #fb7185"></span><span class="w-2 h-2 rounded-full" style="background: #fdba74"></span><span class="w-2 h-2 rounded-full" style="background: #a78bfa"></span><!--]--></span> Rose</button><button aria-label="Set color theme to Catppuccin" class="px-2 py-1 text-xs hover:bg-surface-200-800 transition-colors flex items-center gap-1 "><span class="flex gap-0.5"><!--[--><span class="w-2 h-2 rounded-full" style="background: #8839ef"></span><span class="w-2 h-2 rounded-full" style="background: #fe640b"></span><span class="w-2 h-2 rounded-full" style="background: #40a02b"></span><!--]--></span> Catppuccin</button><button aria-label="Set color theme to Goth" class="px-2 py-1 text-xs hover:bg-surface-200-800 transition-colors flex items-center gap-1 "><span class="flex gap-0.5"><!--[--><span class="w-2 h-2 rounded-full" style="background: #E40303"></span><span class="w-2 h-2 rounded-full" style="background: #FF8C00"></span><span class="w-2 h-2 rounded-full" style="background: #732982"></span><!--]--></span> Goth</button><button aria-label="Set color theme to xoxd" class="px-2 py-1 text-xs hover:bg-surface-200-800 transition-colors flex items-center gap-1 "><span class="flex gap-0.5"><!--[--><span class="w-2 h-2 rounded-full" style="background: #5bcefa"></span><span class="w-2 h-2 rounded-full" style="background: #f5a9b8"></span><span class="w-2 h-2 rounded-full" style="background: #ffffff"></span><!--]--></span> xoxd</button><!--]--></div></div><!----></footer><!--]--><!--]--><!----></div><!--]--><!----><!----></div><!--]--><!--]--><!----></div><!--]--><!--]--><!----><!----><!----></nav><!--]--><!--]--><!----></div><!--]--><!--]--><!----></header><!--]--><!----> <section class="hero-banner" style="opacity: 1;"><picture><source srcset="/images/header.webp" type="image/webp"/> <img src="/images/header.png" alt="Great Blue Heron" class="hero-banner-img" width="672" height="219" fetchpriority="high" decoding="sync"/></picture> <div class="hero-banner-overlay"><p class="hero-banner-title text-3xl sm:text-4xl lg:text-5xl xl:text-6xl" role="banner">Trans Scend Survival</p> <div class="hero-banner-separator" aria-hidden="true"></div> <p class="hero-banner-description"><span class="hero-banner-description-word"><strong>Trans:</strong> Latin prefix implying “across” or “Beyond”, often used in gender
64					nonconforming situations</span> <span class="hero-banner-description-dash" aria-hidden="true">—</span> <span class="hero-banner-description-word"><strong>Scend:</strong> Archaic word describing a strong “surge” or “wave”, originating
65					with 15th century english sailors</span> <span class="hero-banner-description-dash" aria-hidden="true">—</span> <span class="hero-banner-description-word"><strong>Survival:</strong> 15th century english compound word describing an existence only worth transcending</span></p> <p class="hero-banner-subtitle text-base sm:text-lg lg:text-xl">Jess Sullivan</p></div></section> <!--[0--><main id="main-content" class="flex-1"><!--[--><div class="container mx-auto px-4 py-12 max-w-5xl"><div class="sr-only" aria-live="polite" data-testid="tinyland-blog-broker-state"><!--[-1-->Tinyland broker stream loading.<!--]--></div> <div class="flex flex-wrap items-baseline justify-between gap-3 mb-8"><h1 class="font-heading text-3xl font-bold">Blog</h1> <div class="text-right"><p class="text-sm text-surface-500">140 posts</p> <p class="text-xs text-surface-600-400" title="https://hub.tinyland.dev/projections/jesssullivan-github-io/blog/broker-stream.v1.json">Checking broker</p></div></div> <div class="lg:hidden mb-6"><div class="profile-sidebar profile-sidebar--compact"><!--[0--><div class="flex items-center gap-4 mb-4"><img src="https://github.com/Jesssullivan.png" alt="Jess Sullivan" width="64" height="64" class="rounded-full" loading="lazy"/> <div><p class="font-semibold">Jess Sullivan</p> <p class="text-xs text-surface-500">Full stack engineer, musician, birdwatcher</p></div></div><!--]--></div><!----></div> <div class="grid grid-cols-1 lg:grid-cols-[1fr_250px] gap-8"><div><!--[-1--><div class="mb-8 animate-pulse"><div class="w-full h-10 bg-surface-300/30"></div></div><!--]--><!----> <!--[-1--><div class="grid grid-cols-1 sm:grid-cols-2 gap-6"><!--[--><!--[1--><article class="card glass p-0 overflow-hidden hover:ring-2 ring-primary-500 transition-all group "><a href="/blog/clearing-canon-5b00-lock-native-key-free-megatank-reset" class="block"><!--[0--><div class="relative w-full h-48 overflow-hidden bg-surface-200-800"><!--[-1--><!--]--> <picture><!--[0--><source srcset="/images/posts/canon-megatank-g6020.avif" type="image/avif"/><!--]--> <!--[0--><source srcset="/images/posts/canon-megatank-g6020.webp" type="image/webp"/><!--]--> <img src="/images/posts/canon-megatank-g6020.jpg" alt="" class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-[1.02]" loading="lazy" decoding="async" width="1200" height="900"/></picture></div><!--]--> <div class="p-6 "><div class="flex items-center gap-3 text-sm text-surface-500 mb-2"><time class="font-mono text-xs">Jun 9, 2026</time> <!--[0--><span class="text-surface-300">|</span> <span class="text-xs" title="~1610 words">7 min</span><!--]--> <!--[0--><span class="badge preset-outlined-warning-500 text-xs capitalize">hardware</span><!--]--></div> <h2 class="font-heading text-xl font-semibold leading-snug group-hover:text-primary-500 transition-colors">Hacking Canon MegaTank and clearing 5B00 Lock: A Native Waste-Ink Reset over USB with Ghidra, Frida and friends</h2> <!--[0--><p class="text-surface-600-400 mt-2 text-sm leading-relaxed line-clamp-3">A complete technical reference for resetting the Canon G-series MegaTank '5B00 ink absorber full' lock from Linux.  Recovering the usbprint vendor-control maintenance protocol, the per-session keyword-bound write cipher and correlating payloads against friendly-fire RE dumps from WICReset</p><!--]--> <!--[-1--><!--]--></div></a> <!--[0--><div class="flex flex-wrap gap-1.5 px-6 pb-5 -mt-2"><!--[--><a href="/blog/tag/canon" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">canon</a><a href="/blog/tag/megatank" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">megatank</a><a href="/blog/tag/g6020" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">g6020</a><a href="/blog/tag/5b00" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">5b00</a><a href="/blog/tag/usb-protocol" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">usb-protocol</a><a href="/blog/tag/reverse-engineering" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">reverse-engineering</a><a href="/blog/tag/right-to-repair" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">right-to-repair</a><a href="/blog/tag/ghidra" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">ghidra</a>
65<a href="/blog/tag/frida" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">frida</a><a href="/blog/tag/usbmon" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">usbmon</a><!--]--></div><!--]--></article><!--]--><!--[1--><article class="card glass p-0 overflow-hidden hover:ring-2 ring-primary-500 transition-all group "><a href="/blog/glue-you-can-see-in-uv" class="block"><!--[0--><div class="relative w-full h-48 overflow-hidden bg-surface-200-800"><!--[-1--><!--]--> <picture><!--[0--><source srcset="/images/posts/uv-glue-development.avif" type="image/avif"/><!--]--> <!--[0--><source srcset="/images/posts/uv-glue-development.webp" type="image/webp"/><!--]--> <img src="/images/posts/uv-glue-development.jpg" alt="" class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-[1.02]" loading="lazy" decoding="async" width="1200" height="956"/></picture></div><!--]--> <div class="p-6 "><div class="flex items-center gap-3 text-sm text-surface-500 mb-2"><time class="font-mono text-xs">Jun 8, 2026</time> <!--[0--><span class="text-surface-300">|</span> <span class="text-xs" title="~230 words">1 min</span><!--]--> <!--[0--><span class="badge preset-outlined-warning-500 text-xs capitalize">hardware</span><!--]--></div> <h2 class="font-heading text-xl font-semibold leading-snug group-hover:text-primary-500 transition-colors">Glue You Can See in UV</h2> <!--[0--><p class="text-surface-600-400 mt-2 text-sm leading-relaxed line-clamp-3">A 3D-printer bed adhesive that's stronger than Frank's Instagoo, loaded with strontium-aluminate phosphor so a 365nm flash shows exactly where you laid it down- plus a Klipper gate that won't print on a bare bed.</p><!--]--> <!--[-1--><!--]--></div></a> <!--[0--><div class="flex flex-wrap gap-1.5 px-6 pb-5 -mt-2"><!--[--><a href="/blog/tag/3d-printing" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">3d-printing</a><a href="/blog/tag/bed-adhesion" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">bed-adhesion</a><a href="/blog/tag/klipper" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">klipper</a><a href="/blog/tag/chemistry" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">chemistry</a><a href="/blog/tag/diy" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">diy</a><!--]--></div><!--]--></article><!--]--><!--[1--><article class="card glass p-0 overflow-hidden hover:ring-2 ring-primary-500 transition-all group "><a href="/blog/week-notes-scroll-wheels-and-chasing-the-sun" class="block"><!--[0--><div class="relative w-full h-48 overflow-hidden bg-surface-200-800"><!--[-1--><!--]--> <picture><!--[0--><source srcset="/images/posts/chainwax-emulsion.avif" type="image/avif"/><!--]--> <!--[0--><source srcset="/images/posts/chainwax-emulsion.webp" type="image/webp"/><!--]--> <img src="/images/posts/chainwax-emulsion.jpg" alt="" class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-[1.02]" loading="lazy" decoding="async" width="1200" height="660"/></picture></div><!--]--> <div class="p-6 "><div class="flex items-center gap-3 text-sm text-surface-500 mb-2"><time class="font-mono text-xs">Jun 8, 2026</time> <!--[0--><span class="text-surface-300">|</span> <span class="text-xs" title="~230 words">1 min</span><!--]--> <!--[0--><span class="badge preset-outlined-surface-500 text-xs capitalize">personal</span><!--]--></div> <h2 class="font-heading text-xl font-semibold leading-snug group-hover:text-primary-500 transition-colors">Week Notes: scroll wheels, spring legs, and chasing the sun</h2> <!--[0--><p class="text-surface-600-400 mt-2 text-sm leading-relaxed line-clamp-3">Became the nixpkgs maintainer of UnnaturalScrollWheels, found my biking legs again at 100 miles a week, and started quietly plotting a 2030 across-Ireland enduro.
65</p><!--]--> <!--[-1--><!--]--></div></a> <!--[0--><div class="flex flex-wrap gap-1.5 px-6 pb-5 -mt-2"><!--[--><a href="/blog/tag/weeknotes" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">weeknotes</a><a href="/blog/tag/nixos" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">nixos</a><a href="/blog/tag/cycling" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">cycling</a><a href="/blog/tag/personal" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">personal</a><!--]--></div><!--]--></article><!--]--><!--[1--><article class="card glass p-0 overflow-hidden hover:ring-2 ring-primary-500 transition-all group "><a href="/blog/gingersnap-cookies" class="block"><!--[0--><div class="relative w-full h-48 overflow-hidden bg-surface-200-800"><!--[-1--><!--]--> <picture><!--[-1--><!--]--> <!--[-1--><!--]--> <img src="/images/posts/gingersnap-cookies.webp" alt="" class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-[1.02]" loading="lazy" decoding="async" width="900" height="1200"/></picture></div><!--]--> <div class="p-6 "><div class="flex items-center gap-3 text-sm text-surface-500 mb-2"><time class="font-mono text-xs">May 29, 2026</time> <!--[0--><span class="text-surface-300">|</span> <span class="text-xs" title="~460 words">2 min</span><!--]--> <!--[0--><span class="badge preset-outlined-primary-500 text-xs capitalize">tutorial</span><!--]--></div> <h2 class="font-heading text-xl font-semibold leading-snug group-hover:text-primary-500 transition-colors">Gingersnap Cookies (from a milk-free, soy-free recipe card)</h2> <!--[0--><p class="text-surface-600-400 mt-2 text-sm leading-relaxed line-clamp-3">A milk-free, soy-free gingersnap recipe card, transcribed from a photo with Apple Vision OCR, metric equivalents, a scaler, and notes on the baking soda reaction.</p><!--]--> <!--[-1--><!--]--></div></a> <!--[0--><div class="flex flex-wrap gap-1.5 px-6 pb-5 -mt-2"><!--[--><a href="/blog/tag/recipe" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">recipe</a><a href="/blog/tag/baking" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">baking</a><a href="/blog/tag/baking-science" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">baking-science</a><a href="/blog/tag/cookies" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">cookies</a><a href="/blog/tag/gingersnap" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">gingersnap</a><a href="/blog/tag/allergen-friendly" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">allergen-friendly</a><a href="/blog/tag/ocr" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">ocr</a><a href="/blog/tag/apple-vision" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">apple-vision</a><a href="/blog/tag/swift" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">swift</a><a href="/blog/tag/llvm" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">llvm</a><a href="/blog/tag/macos" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">macos</a><!--]--></div><!--]--></article><!--]--><!--[1--><article class="card glass p-0 overflow-hidden hover:ring-2 ring-primary-500 transition-all group "><a href="/blog/trashmonitor-tailnet-window-into-the-hardware-pile" class="block"><!--[0--><div class="relative w-full h-48 overflow-hidden bg-surface-200-800"><!--[-1--><!--]--> <picture><!--[-1--><!--]--> <!--[-1--><!--]--> <img src="/images/posts/trashmonitor-setup.webp" alt="" class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-[1.02]" loading="lazy" decoding="async" width="720" height="525"/></picture></div><!--]--> <div class="p-6 "><div class="flex items-center gap-3 text-sm text-surface-500 mb-2"><time class="font-mono text-xs">May 11, 2026</time> <!--[0--><span class="text-surface-300">|</span> <span class="text-xs" title="~230 words">1 min</span><!--]--> <!--[0--><span class="badge preset-outlined-warning-500 text-xs capitalize">hardware</span><!--]--></div> <h2 class="font-heading text-xl font-semibold leading-snug group-hover:text-primary-500 transition-colors">Trashmonitor to oggle my goggles and behold the blinkenlights</h2> <!--[0--><p class="text-surface-600-400 mt-2 text-sm leading-relaxed line-clamp-3">I glued together a tittle tailnet-only streaming surface so I can oggle my goggles, blinkenlights, dev boards, and the hardware pile from the sanctum of anywhere</p><!--]--> <!--[-1--><!--]--></div></a> <!--[0--><div class="flex flex-wrap gap-1.5 px-6 pb-5 -mt-2"><!--[--><a href="/blog/tag/homelab" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">homelab</a><a href="/blog/tag/hardware" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">hardware</a><a href="/blog/tag/tailscale" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">tailscale</a><a href="/blog/tag/kubernetes" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">kubernetes</a><a href="/blog/tag/streaming" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">streaming</a><a href="/blog/tag/xr" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">xr</a><a href="/blog/tag/ffmpeg" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">ffmpeg</a><a href="/blog/tag/mediamtx" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">mediamtx</a><a href="/blog/tag/sveltekit" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">sveltekit</a><!--]--></div><!--]--></article><!--]--><!--[1--><article class="card glass p-0 overflow-hidden hover:ring-2 ring-primary-500 transition-all group "><a href="/blog/was110-fidium-gonetspeed-omci-personalities" class="block"><!--[0--><div class="relative w-full h-48 overflow-hidden bg-surface-200-800"><!--[-1--><!--]--> <picture><!--[-1--><!--]--> <!--[-1--><!--]--> <img src="/images/posts/was110-fidium-gonetspeed-omci-personalities.webp" alt="" class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-[1.02]" loading="lazy" decoding="async" width="320" height="181"/></picture></div><!--]--> <div class="p-6 "><div class="flex items-center gap-3 text-sm text-surface-500 mb-2"><time class="font-mono text-xs">May 3, 2026</time> <!--[0--><span class="text-surface-300">|</span> <span class="text-xs" title="~2530 words">11 min</span><!--]--> <!--[0--><span class="badge preset-outlined-warning-500 text-xs capitalize">devops</span><!--]--></div> <h2 class="font-heading text-xl font-semibold leading-snug group-hover:text-primary-500 transition-colors">Hacking around with XGS-PON: Fiber ISPs, WAS-110 Modules &amp; Mikrotik</h2> <!--[0--><p class="text-surface-600-400 mt-2 text-sm leading-relaxed line-clamp-3">Two fiber ISPs, one switch, two BFW WAS-110 SFP+ XGS-PON modules running 8311 community firmware. Fidium and GoNetSpeed both authenticate the same way (clone the operator-supplied ONT's identity into IaC), but their upstream OLTs push very different OMCI service profiles. This is the procedure I used to land both, with annotated scripts and OMCI captures.</p><!--]--> <!--[-1--><!--]--></div></a> <!--[0--><div class="flex flex-wrap gap-1.5 px-6 pb-5 -mt-2"><!--[--><a href="/blog/tag/xgs-pon" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">xgs-pon</a><a href="/blog/tag/ont" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">ont</a><a href="/blog/tag/was-110" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">was-110</a><a href="/blog/tag/mikrotik" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">mikrotik</a><a href="/blog/tag/crs309" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">crs309</a><a href="/blog/tag/fiber" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">fiber</a><a href="/blog/tag/homelab" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">homelab</a><a href="/blog/tag/fidium" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">fidium</a><a href="/blog/tag/gonetspeed" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">gonetspeed</a><a href="/blog/tag/omci" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">omci</a><a href="/blog/tag/nokia" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">nokia</a><a href="/blog/tag/8311" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">8311</a><a href="/blog/tag/g988" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">g988</a><a href="/blog/tag/isam" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">isam</a><!--]--></div><!--]--></article><!--]--><!--[1--><article class="card glass p-0 overflow-hidden hover:ring-2 ring-primary-500 transition-all group "><a href="/blog/small-zig-libraries-for-apple-shaped-escape-hatches" class="block"><!--[0--><div class="relative w-full h-48 overflow-hidden bg-surface-200-800"><!--[-1--><!--]--> <picture><!--[0--><source srcset="/images/posts/zig-ffi-apple-linux-bridge.avif" type="image/avif"/><!--]--> <!--[0--><source srcset="/images/posts/zig-ffi-apple-linux-bridge.webp" type="image/webp"/><!--]--> <img src="/images/posts/zig-ffi-apple-linux-bridge.png" alt="" class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-[1.02]" loading="lazy" decoding="async" width="1200" height="630"/></picture></div><!--]--> <div class="p-6 "><div class="flex items-center gap-3 text-sm text-surface-500 mb-2"><time class="font-mono text-xs">Apr 30, 2026</time> <!--[0--><span class="text-surface-300">|</span> <span class="text-xs" title="~460 words">2 min</span><!--]--> <!--[0--><span class="badge preset-outlined-primary-500 text-xs capitalize">software</span><!--]--></div> <h2 class="font-heading text-xl font-semibold leading-snug group-hover:text-primary-500 transition-colors">Little Zig Libraries for Fruit-Shaped Escape Hatches</h2> <!--[0--><p class="text-surface-600-400 mt-2 text-sm leading-relaxed line-clamp-3">Four tiny Zig libraries, one small thesis: keep the app shell pleasant on macOS, but move native capabilities behind a boring C ABI so Linux ports do not become full rewrites.</p><!--]--> <!--[-1--><!--]--></div></a> <!--[0--><div class="flex flex-wrap gap-1.5 px-6 pb-5 -mt-2"><!--[--><a href="/blog/tag/zig" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">zig</a><a href="/blog/tag/foss" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">foss</a><a href="/blog/tag/ffi" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">ffi</a><a href="/blog/tag/swift" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">swift</a><a href="/blog/tag/objc" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">objc</a><a href="/blog/tag/linux" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">linux</a><a href="/blog/tag/macos" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">macos</a><a href="/blog/tag/ctap2" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">ctap2</a><a href="/blog/tag/keychain" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">keychain</a><a href="/blog/tag/notifications" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">notifications</a><a href="/blog/tag/crypto" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">crypto</a>
65<!--]--></div><!--]--></article><!--]--><!--[1--><article class="card glass p-0 overflow-hidden hover:ring-2 ring-primary-500 transition-all group "><a href="/blog/darwin-nic-docs-are-live" class="block"><!--[0--><div class="relative w-full h-48 overflow-hidden bg-surface-200-800"><!--[-1--><!--]--> <picture><!--[-1--><!--]--> <!--[0--><source srcset="/images/posts/darwin-nic-bastion-flow.webp" type="image/webp"/><!--]--> <img src="/images/posts/darwin-nic-bastion-flow.png" alt="" class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-[1.02]" loading="lazy" decoding="async" width="1200" height="630"/></picture></div><!--]--> <div class="p-6 "><div class="flex items-center gap-3 text-sm text-surface-500 mb-2"><time class="font-mono text-xs">Apr 28, 2026</time> <!--[0--><span class="text-surface-300">|</span> <span class="text-xs" title="~690 words">3 min</span><!--]--> <!--[0--><span class="badge preset-outlined-warning-500 text-xs capitalize">devops</span><!--]--></div> <h2 class="font-heading text-xl font-semibold leading-snug group-hover:text-primary-500 transition-colors">Smol DarwinNicUtil Has Docs and installers now, yay</h2> <!--[0--><p class="text-surface-600-400 mt-2 text-sm leading-relaxed line-clamp-3">DarwinNicUtil v2.1.2 is documented, packaged on PyPI and FlakeHub, and now reflects the Mac-bastion OOB flow I use to manage lab network hardware.</p><!--]--> <!--[-1--><!--]--></div></a> <!--[0--><div class="flex flex-wrap gap-1.5 px-6 pb-5 -mt-2"><!--[--><a href="/blog/tag/macOS" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">macOS</a><a href="/blog/tag/Networking" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">Networking</a><a href="/blog/tag/Nix" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">Nix</a><a href="/blog/tag/Python" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">Python</a><a href="/blog/tag/Docs" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">Docs</a><a href="/blog/tag/Tailscale" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">Tailscale</a><!--]--></div><!--]--></article><!--]--><!--[1--><article class="card glass p-0 overflow-hidden hover:ring-2 ring-primary-500 transition-all group "><a href="/blog/reproducible-host-probes-nix-chapel-dhall" class="block"><!--[0--><div class="relative w-full h-48 overflow-hidden bg-surface-200-800"><!--[-1--><!--]--> <picture><!--[-1--><!--]--> <!--[-1--><!--]--> <img src="/images/posts/chapel-lang-meme.webp" alt="" class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-[1.02]" loading="lazy" decoding="async" width="980" height="536"/></picture></div><!--]--> <div class="p-6 "><div class="flex items-center gap-3 text-sm text-surface-500 mb-2"><time class="font-mono text-xs">Apr 25, 2026</time> <!--[0--><span class="text-surface-300">|</span> <span class="text-xs" title="~920 words">4 min</span><!--]--> <!--[0--><span class="badge preset-outlined-warning-500 text-xs capitalize">hardware</span><!--]--></div> <h2 class="font-heading text-xl font-semibold leading-snug group-hover:text-primary-500 transition-colors">Host Characterization with Chapel, Fancy Testing &amp; Dhall</h2> <!--[0--><p class="text-surface-600-400 mt-2 text-sm leading-relaxed line-clamp-3">Using Chapel's forall, my own property-based testing library and Gabby's Dhall lang for characterization records on a dual-socket Xeon machine, lets do some awesome kernel scheduling analysis</p><!--]--> <!--[-1--><!--]--></div></a> <!--[0--><div class="flex flex-wrap gap-1.5 px-6 pb-5 -mt-2"><!--[--><a href="/blog/tag/Chapel" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">Chapel</a><a href="/blog/tag/Nix" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">Nix</a><a href="/blog/tag/Dhall" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">Dhall</a><a href="/blog/tag/NUMA" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">NUMA</a><a href="/blog/tag/hardware" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">hardware</a><a href="/blog/tag/reproducibility" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">reproducibility</a><a href="/blog/tag/RT" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">RT</a><a href="/blog/tag/PBT" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">PBT</a><!--]--></div><!--]--></article><!--]--><!--[1--><article class="card glass p-0 overflow-hidden hover:ring-2 ring-primary-500 transition-all group "><a href="/blog/week-notes-indeterminism-passkeys-and-spring" class="block"><!--[0--><div class="relative w-full h-48 overflow-hidden bg-surface-200-800"><!--[-1--><!--]--> <picture><!--[0--><source srcset="/images/posts/IMG_2147.avif" type="image/avif"/><!--]--> <!--[0--><source srcset="/images/posts/IMG_2147.webp" type="image/webp"/><!--]--> <img src="/images/posts/IMG_2147.jpg" alt="" class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-[1.02]" loading="lazy" decoding="async" width="1200" height="1116"/></picture></div><!--]--> <div class="p-6 "><div class="flex items-center gap-3 text-sm text-surface-500 mb-2"><time class="font-mono text-xs">Mar 21, 2026</time> <!--[0--><span class="text-surface-300">|</span> <span class="text-xs" title="~690 words">3 min</span><!--]--> <!--[0--><span class="badge preset-outlined-surface-500 text-xs capitalize">
65personal</span><!--]--></div> <h2 class="font-heading text-xl font-semibold leading-snug group-hover:text-primary-500 transition-colors">Week Notes: Indeterminism, Passkeys, and Spring</h2> <!--[0--><p class="text-surface-600-400 mt-2 text-sm leading-relaxed line-clamp-3">Determinism begets fascination with indeterminism. FIDO2 work for cmux, qutebrowser &amp; keepassxc, a 2026 teletype, 20km spring run, lead climbing, and the BCI server rack draws a concerning 4kWh at idle.</p><!--]--> <!--[-1--><!--]--></div></a> <!--[0--><div class="flex flex-wrap gap-1.5 px-6 pb-5 -mt-2"><!--[--><a href="/blog/tag/weeknotes" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">weeknotes</a><a href="/blog/tag/foss" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">foss</a><a href="/blog/tag/indeterminism" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">indeterminism</a><a href="/blog/tag/nix" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">nix</a><a href="/blog/tag/cmux" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">cmux</a><a href="/blog/tag/qutebrowser" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">qutebrowser</a><a href="/blog/tag/fido2" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">fido2</a><a href="/blog/tag/ambienttalk" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">ambienttalk</a><a href="/blog/tag/climbing" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">climbing</a><a href="/blog/tag/bci" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">bci</a><a href="/blog/tag/promise-theory" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">promise-theory</a><a href="/blog/tag/music" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">music</a><a href="/blog/tag/jazz" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">jazz</a><a href="/blog/tag/metal" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">metal</a><!--]--></div><!--]--></article><!--]--><!--[1--><article class="card glass p-0 overflow-hidden hover:ring-2 ring-primary-500 transition-all group "><a href="/blog/winrm-quotas-hidden-plugin-layers-and-why-psrp-has-been-the-answer-since-2018" class="block"><!--[0--><div class="relative w-full h-48 overflow-hidden bg-surface-200-800"><!--[-1--><!--]--> <picture><!--[0--><source srcset="/images/posts/winrm-forkbomb-flow.avif" type="image/avif"/><!--]--> <!--[0--><source srcset="/images/posts/winrm-forkbomb-flow.webp" type="image/webp"/><!--]--> <img src="/images/posts/winrm-forkbomb-flow.png" alt="" class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-[1.02]" loading="lazy" decoding="async" width="647" height="1438"/></picture></div><!--]--> <div class="p-6 "><div class="flex items-center gap-3 text-sm text-surface-500 mb-2"><time class="font-mono text-xs">Mar 13, 2026</time> <!--[0--><span class="text-surface-300">|</span> <span class="text-xs" title="~1150 words">5 min</span><!--]--> <!--[0--><span class="badge preset-outlined-warning-500 text-xs capitalize">devops</span><!--]--></div> <h2 class="font-heading text-xl font-semibold leading-snug group-hover:text-primary-500 transition-colors">WinRM Quotas, Plugin Confusion, and Why PSRP Has Been the Answer Since 2018</h2> <!--[0--><p class="text-surface-600-400 mt-2 text-sm leading-relaxed line-clamp-3">Bah!  WinRM has a hidden quota layer, some error messages lie, and the fix has been sitting in ansible-core since 2018.</p><!--]--> <!--[-1--><!--]--></div></a> <!--[0--><div class="flex flex-wrap gap-1.5 px-6 pb-5 -mt-2"><!--[--><a href="/blog/tag/ansible" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">ansible</a><a href="/blog/tag/winrm" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">winrm</a><a href="/blog/tag/molecule" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">molecule</a><a href="/blog/tag/windows" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">windows</a><a href="/blog/tag/devops" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">devops</a><a href="/blog/tag/psrp" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">psrp</a><a href="/blog/tag/active-directory" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">active-directory</a>
65<!--]--></div><!--]--></article><!--]--><!--[1--><article class="card glass p-0 overflow-hidden hover:ring-2 ring-primary-500 transition-all group "><a href="/blog/updated-resume-and-cv" class="block"><!--[0--><div class="relative w-full h-48 overflow-hidden bg-surface-200-800"><!--[-1--><!--]--> <picture><!--[-1--><!--]--> <!--[-1--><!--]--> <img src="/images/posts/idle_jess.webp" alt="" class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-[1.02]" loading="lazy" decoding="async" width="1600" height="917"/></picture></div><!--]--> <div class="p-6 "><div class="flex items-center gap-3 text-sm text-surface-500 mb-2"><time class="font-mono text-xs">Mar 12, 2026</time> <!--[0--><span class="text-surface-300">|</span> <span class="text-xs" title="~230 words">1 min</span><!--]--> <!--[0--><span class="badge preset-outlined-surface-500 text-xs capitalize">personal</span><!--]--></div> <h2 class="font-heading text-xl font-semibold leading-snug group-hover:text-primary-500 transition-colors">Updated Resume &amp; CV — March 2026</h2> <!--[0--><p class="text-surface-600-400 mt-2 text-sm leading-relaxed line-clamp-3">Fresh resume and CV are up. New publications section, binary analysis research, and a bunch of other updates from the past year.</p><!--]--> <!--[-1--><!--]--></div></a> <!--[0--><div class="flex flex-wrap gap-1.5 px-6 pb-5 -mt-2"><!--[--><a href="/blog/tag/personal" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">personal</a><a href="/blog/tag/resume" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">resume</a><a href="/blog/tag/cv" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">cv</a><!--]--></div><!--]--></article><!--]--><!--[1--><article class="card glass p-0 overflow-hidden hover:ring-2 ring-primary-500 transition-all group "><a href="/blog/from-bricked-to-recovered-the-story-of-hacking-an-nvme-ssd-back-to-life" class="block"><!--[0--><div class="relative w-full h-48 overflow-hidden bg-surface-200-800"><!--[-1--><!--]--> <picture><!--[0--><source srcset="/images/posts/xram-injection-flow.avif" type="image/avif"/><!--]--> <!--[0--><source srcset="/images/posts/xram-injection-flow.webp" type="image/webp"/><!--]--> <img src="/images/posts/xram-injection-flow.png" alt="" class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-[1.02]" loading="lazy" decoding="async" width="1200" height="100"/></picture></div><!--]--> <div class="p-6 "><div class="flex items-center gap-3 text-sm text-surface-500 mb-2"><time class="font-mono text-xs">Mar 4, 2026</time> <!--[0--><span class="text-surface-300">|</span> <span class="text-xs" title="~5290 words">23 min</span><!--]--> <!--[0--><span class="badge preset-outlined-warning-500 text-xs capitalize">hardware</span><!--]--></div> <h2 class="font-heading text-xl font-semibold leading-snug group-hover:text-primary-500 transition-colors">From Bricked to Recovered: The Story of Hacking an NVMe SSD Back to Life</h2> <!--[0--><p class="text-surface-600-400 mt-2 text-sm leading-relaxed line-clamp-3">How I recovered a write-protected NVMe SSD by reverse engineering a USB bridge chip and injecting commands directly into its memory — no professional tools needed.</p><!--]--> <!--[-1--><!--]--></div></a> <!--[0--><div class="flex flex-wrap gap-1.5 px-6 pb-5 -mt-2"><!--[--><a href="/blog/tag/nvme" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">nvme</a><a href="/blog/tag/ssd-recovery" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">ssd-recovery</a><a href="/blog/tag/reverse-engineering" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">reverse-engineering</a><a href="/blog/tag/usb-bridge" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">usb-bridge</a><a href="/blog/tag/zig" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">zig</a><!--]--></div><!--]--></article><!--]--><!--[1--><article class="card glass p-0 overflow-hidden hover:ring-2 ring-primary-500 transition-all group "><a href="/blog/week-notes-cyborgs-servers-and-sending" class="block"><!--[0--><div class="relative w-full h-48 overflow-hidden bg-surface-200-800"><!--[-1--><!--]--> <picture><!--[0--><source srcset="/images/posts/IMG_2125.avif" type="image/avif"/><!--]--> <!--[0--><source srcset="/images/posts/IMG_2125.webp" type="image/webp"/><!--]--> <img src="/images/posts/IMG_2125.jpg" alt="" class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-[1.02]" loading="lazy" decoding="async" width="1054" height="1510"/></picture></div><!--]--> <div class="p-6 "><div class="flex items-center gap-3 text-sm text-surface-500 mb-2"><time class="font-mono text-xs">Mar 4, 2026</time> <!--[0--><span class="text-surface-300">|</span> <span class="text-xs" title="~230 words">1 min</span><!--]--> <!--[0--><span class="badge preset-outlined-surface-500 text-xs capitalize">
65personal</span><!--]--></div> <h2 class="font-heading text-xl font-semibold leading-snug group-hover:text-primary-500 transition-colors">Week Notes: Cyborgs, Servers, and Sending</h2> <!--[0--><p class="text-surface-600-400 mt-2 text-sm leading-relaxed line-clamp-3">Dell 7810 bifurcation woes, BCI goggles laced up, tcfs gets macOS FileProvider, 4k lines of Ansible replaced with Dhall, 5.13 top rope project, and Norwegian metal in the office.</p><!--]--> <!--[-1--><!--]--></div></a> <!--[0--><div class="flex flex-wrap gap-1.5 px-6 pb-5 -mt-2"><!--[--><a href="/blog/tag/weeknotes" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">weeknotes</a><a href="/blog/tag/homelab" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">homelab</a><a href="/blog/tag/bci" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">bci</a><a href="/blog/tag/xoxdwm" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">xoxdwm</a><a href="/blog/tag/tcfs" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">tcfs</a><a href="/blog/tag/dhall" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">dhall</a><a href="/blog/tag/climbing" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">climbing</a><a href="/blog/tag/metal" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">metal</a><a href="/blog/tag/reverse-engineering" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">reverse-engineering</a><!--]--></div><!--]--></article><!--]--><!--[1--><article class="card glass p-0 overflow-hidden hover:ring-2 ring-primary-500 transition-all group "><a href="/blog/xram-injection-bypassing-usb-bridge-whitelists-to-recover-nvme-drives" class="block"><!--[0--><div class="relative w-full h-48 overflow-hidden bg-surface-200-800"><!--[-1--><!--]--> <picture><!--[0--><source srcset="/images/posts/IMG_2127.avif" type="image/avif"/><!--]--> <!--[0--><source srcset="/images/posts/IMG_2127.webp" type="image/webp"/><!--]--> <img src="/images/posts/IMG_2127.jpg" alt="" class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-[1.02]" loading="lazy" decoding="async" width="1200" height="874"/></picture></div><!--]--> <div class="p-6 "><div class="flex items-center gap-3 text-sm text-surface-500 mb-2"><time class="font-mono text-xs">Mar 4, 2026</time> <!--[0--><span class="text-surface-300">|</span> <span class="text-xs" title="~3910 words">17 min</span><!--]--> <!--[0--><span class="badge preset-outlined-warning-500 text-xs capitalize">hardware</span><!--]--></div> <h2 class="font-heading text-xl font-semibold leading-snug group-hover:text-primary-500 transition-colors">XRAM Injection: Bypassing USB Bridge Whitelists to Recover NVMe Drives</h2> <!--[0--><p class="text-surface-600-400 mt-2 text-sm leading-relaxed line-clamp-3">A complete technical guide to the XRAM injection technique for sending arbitrary NVMe admin commands through the ASMedia ASM2362 USB-to-NVMe bridge, bypassing its firmware opcode whitelist.</p><!--]--> <!--[-1--><!--]--></div></a> <!--[0--><div class="flex flex-wrap gap-1.5 px-6 pb-5 -mt-2"><!--[--><a href="/blog/tag/nvme" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">nvme</a><a href="/blog/tag/asm2362" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">asm2362</a><a href="/blog/tag/xram" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">xram</a><a href="/blog/tag/scsi" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">scsi</a><a href="/blog/tag/usb-bridge" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">usb-bridge</a><a href="/blog/tag/reverse-engineering" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">reverse-engineering</a><a href="/blog/tag/zig" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">zig</a><a href="/blog/tag/low-level" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">low-level</a><!--]--></div><!--]--></article><!--]--><!--[1--><article class="card glass p-0 overflow-hidden hover:ring-2 ring-primary-500 transition-all group "><a href="/blog/aperture-tagged-devices-and-the-tsnet-escape-hatch" class="block"><!--[0--><div class="relative w-full h-48 overflow-hidden bg-surface-200-800"><!--[-1--><!--]--> <picture><!--[0--><source srcset="/images/posts/aperture-architecture.avif" type="image/avif"/><!--]--> <!--[0--><source srcset="/images/posts/aperture-architecture.webp" type="image/webp"/><!--]--> <img src="/images/posts/aperture-architecture.png" alt="" class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-[1.02]" loading="lazy" decoding="async" width="832" height="94"/></picture></div><!--]--> <div class="p-6 "><div class="flex items-center gap-3 text-sm text-surface-500 mb-2"><time class="font-mono text-xs">Feb 26, 2026</time> <!--[0--><span class="text-surface-300">|</span> <span class="text-xs" title="~920 words">4 min</span><!--]--> <!--[0--><span class="badge preset-outlined-warning-500 text-xs capitalize">devops</span><!--]--></div> <h2 class="font-heading text-xl font-semibold leading-snug group-hover:text-primary-500 transition-colors">Aperture, Tagged Devices, and the tsnet Escape Hatch</h2> <!--[0--><p class="text-surface-600-400 mt-2 text-sm leading-relaxed line-clamp-3">Every device on the tailnet was tagged. Aperture doesn't recognize tagged identities. I was locked out of my own AI gateway-- and a throwaway Go program got me back in.</p><!--]--> <!--[-1--><!--]--></div></a> <!--[0--><div class="flex flex-wrap gap-1.5 px-6 pb-5 -mt-2"><!--[-->
65<a href="/blog/tag/Tailscale" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">Tailscale</a><a href="/blog/tag/DevOps" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">DevOps</a><!--]--></div><!--]--></article><!--]--><!--[1--><article class="card glass p-0 overflow-hidden hover:ring-2 ring-primary-500 transition-all group "><a href="/blog/ligature-test-fixture" class="block"><!--[0--><div class="relative w-full h-48 overflow-hidden bg-surface-200-800"><!--[-1--><!--]--> <picture><!--[0--><source srcset="/images/posts/orange-wood-ducks.avif" type="image/avif"/><!--]--> <!--[0--><source srcset="/images/posts/orange-wood-ducks.webp" type="image/webp"/><!--]--> <img src="/images/posts/orange-wood-ducks.jpg" alt="" class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-[1.02]" loading="lazy" decoding="async" width="1200" height="960"/></picture></div><!--]--> <div class="p-6 "><div class="flex items-center gap-3 text-sm text-surface-500 mb-2"><time class="font-mono text-xs">Dec 31, 2024</time> <!--[0--><span class="text-surface-300">|</span> <span class="text-xs" title="~230 words">1 min</span><!--]--> <!--[0--><span class="badge preset-outlined-warning-500 text-xs capitalize">hardware</span><!--]--></div> <h2 class="font-heading text-xl font-semibold leading-snug group-hover:text-primary-500 transition-colors">Ligature Test Fixture</h2> <!--[0--><p class="text-surface-600-400 mt-2 text-sm leading-relaxed line-clamp-3">Test fixture post for verifying Fira Code ligatures render correctly in code blocks.</p><!--]--> <!--[-1--><!--]--></div></a> <!--[0--><div class="flex flex-wrap gap-1.5 px-6 pb-5 -mt-2"><!--[--><a href="/blog/tag/test" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">test</a><!--]--></div><!--]--></article><!--]--><!--[1--><article class="card glass p-0 overflow-hidden hover:ring-2 ring-primary-500 transition-all group "><a href="/blog/what-have-i-been-up-to-these-last-few-months" class="block"><!--[0--><div class="relative w-full h-48 overflow-hidden bg-surface-200-800"><!--[-1--><!--]--> <picture><!--[0--><source srcset="/images/posts/IMG_6649-Edit.avif" type="image/avif"/><!--]--> <!--[0--><source srcset="/images/posts/IMG_6649-Edit.webp" type="image/webp"/><!--]--> <img src="/images/posts/IMG_6649-Edit.jpg" alt="" class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-[1.02]" loading="lazy" decoding="async" width="960" height="1440"/></picture></div><!--]--> <div class="p-6 "><div class="flex items-center gap-3 text-sm text-surface-500 mb-2"><time class="font-mono text-xs">May 22, 2024</time> <!--[0--><span class="text-surface-300">|</span> <span class="text-xs" title="~230 words">1 min</span><!--]--> <!--[0--><span class="badge preset-outlined-surface-500 text-xs capitalize">personal</span><!--]--></div> <h2 class="font-heading text-xl font-semibold leading-snug group-hover:text-primary-500 transition-colors">What have I been up to these last few months?</h2> <!--[0--><p class="text-surface-600-400 mt-2 text-sm leading-relaxed line-clamp-3">I am off to do cool stuff at Bates College! 🚀 I am pleased to shared I have accepted position as a Systems Analyst at Bates. That’s right- I’ve moved from...</p><!--]--> <!--[-1--><!--]--></div></a> <!--[0--><div class="flex flex-wrap gap-1.5 px-6 pb-5 -mt-2"><!--[--><a href="/blog/tag/personal" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">personal</a><a href="/blog/tag/update" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">update</a><!--]--></div><!--]--></article><!--]--><!--[1--><article class="card glass p-0 overflow-hidden hover:ring-2 ring-primary-500 transition-all group "><a href="/blog/i-wrote-a-mutual-aid-mental-health-service" class="block"><!--[0--><div class="relative w-full h-48 overflow-hidden bg-surface-200-800"><!--[-1--><!--]--> <picture><!--[0--><source srcset="/images/posts/IMG_0872.avif" type="image/avif"/><!--]--> <!--[0--><source srcset="/images/posts/IMG_0872.webp" type="image/webp"/><!--]--> <img src="/images/posts/IMG_0872.jpg" alt="" class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-[1.02]" loading="lazy" decoding="async" width="920" height="613"/></picture></div><!--]--> <div class="p-6 "><div class="flex items-center gap-3 text-sm text-surface-500 mb-2"><time class="font-mono text-xs">Feb 22, 2024</time> <!--[0--><span class="text-surface-300">|</span> <span class="text-xs" title="~230 words">1 min</span><!--]--> <!--[0--><span class="badge preset-outlined-primary-500 text-xs capitalize">software</span><!--]--></div> <h2 class="font-heading text-xl font-semibold leading-snug group-hover:text-primary-500 transition-colors">I wrote a mutual aid mental health service</h2> <!--[0--><p class="text-surface-600-400 mt-2 text-sm leading-relaxed line-clamp-3">Check out this project here: Tetrahedron.gay is a mutual aid mental health group informally continuing the structured partial hospital
65ization Triangle Program.</p><!--]--> <!--[-1--><!--]--></div></a> <!--[0--><div class="flex flex-wrap gap-1.5 px-6 pb-5 -mt-2"><!--[--><a href="/blog/tag/software" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">software</a><a href="/blog/tag/mental-health" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">mental-health</a><a href="/blog/tag/social-good" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">social-good</a><!--]--></div><!--]--></article><!--]--><!--[1--><article class="card glass p-0 overflow-hidden hover:ring-2 ring-primary-500 transition-all group "><a href="/blog/accuwix" class="block"><!--[0--><div class="relative w-full h-48 overflow-hidden bg-surface-200-800"><!--[-1--><!--]--> <picture><!--[0--><source srcset="/images/posts/IMG_0145-Edit.avif" type="image/avif"/><!--]--> <!--[0--><source srcset="/images/posts/IMG_0145-Edit.webp" type="image/webp"/><!--]--> <img src="/images/posts/IMG_0145-Edit.jpg" alt="" class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-[1.02]" loading="lazy" decoding="async" width="920" height="613"/></picture></div><!--]--> <div class="p-6 "><div class="flex items-center gap-3 text-sm text-surface-500 mb-2"><time class="font-mono text-xs">Jan 2, 2024</time> <!--[0--><span class="text-surface-300">|</span> <span class="text-xs" title="~230 words">1 min</span><!--]--> <!--[0--><span class="badge preset-outlined-primary-500 text-xs capitalize">software</span><!--]--></div> <h2 class="font-heading text-xl font-semibold leading-snug group-hover:text-primary-500 transition-colors">AccuWix Report CLI</h2> <!--[0--><p class="text-surface-600-400 mt-2 text-sm leading-relaxed line-clamp-3">I wrote this lil command line application while riding on a bus to and from New York City- find the project repository here at jesssullivan/AccuWixReport. 😸...</p><!--]--> <!--[-1--><!--]--></div></a> <!--[0--><div class="flex flex-wrap gap-1.5 px-6 pb-5 -mt-2"><!--[--><a href="/blog/tag/DIY" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">DIY</a><a href="/blog/tag/Ideas" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">Ideas</a><a href="/blog/tag/How-To" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">How-To</a><!--]--></div><!--]--></article><!--]--><!--]--></div> <!--[0--><nav class="flex items-center justify-center gap-2 mt-8"><!--[-1--><span class="btn btn-sm preset-outlined-surface-500 opacity-50 pointer-events-none">← Newer</span><!--]--> <span class="text-sm text-surface-500">Page 1 of 7</span> <!--[0--><a href="/blog?page=2" class="btn btn-sm preset-outlined-surface-500">Older →</a><!--]--></nav><!--]--><!--]--></div> <div class="hidden lg:block"><div class="sticky top-20 max-h-[calc(100dvh-6rem)] overflow-y-auto space-y-8 sidebar-scroll glass p-4"><div class="profile-sidebar "><!--[-1--><div class="text-center mb-4"><img src="https://github.com/Jesssullivan.png" alt="Jess Sullivan" width="250" height="250" class="rounded-full mx-auto mb-3" loading="lazy"/> <h2 class="font-semibold text-lg">Jess Sullivan</h2> <img src="/images/CodeCogsEqn-1.png" alt="Learning = internet * (time + standards * Ambition) / Difficulty" class="w-full mt-2" loading="lazy"/></div> <p class="text-sm text-surface-600-400 mb-4">Full stack engineer, musician, and birdwatcher based in Lewiston, ME &amp; Boston, MA.
66			I build infrastructure tooling, digital automata, hack upon compilers,
67			love learning new languages, futz with hardware, and maintain a lot of
68			fun projects here and elsewhere.</p> <div class="flex flex-wrap gap-2 mb-4"><a href="https://github.com/Jesssullivan" target="_blank" rel="noopener" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors">GitHub</a> <a href="https://gitlab.com/jesssullivan" target="_blank" rel="noopener" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors">GitLab</a> <a href="https://github.com/sponsors/Jesssullivan" target="_blank" rel="noopener" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors">Sponsor</a> <a href="/cv" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors">CV</a> <a href="/about" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors">About</a> <a href="https://www.fightforthefuture.org/" target="_blank" rel="noopener" class="inline-flex items-center"><img src="/images/idl_badge.png" alt="Member of The Internet Defense League" height="20" class="h-5"/></a></div> <div class="tag-cloud"><!--[--><!--[0--><h4 class="text-xs font-semibold uppercase tracking-wider text-surface-400 mt-3 mb-1.5 first:mt-0">Tech / FOSS</h4><!--]--> <div class="flex flex-wrap gap-1.5 mb-1"><!--[--><!--[0--><a href="https://chapel-lang.org/" target="_blank" rel="noopener" aria-label="Visit Chapel" class="badge preset-outlined-surface-500 text-xs hover:preset-filled-primary-500 transition-colors">Chapel</a><!--]--><!--[0--><a href="https://rockylinux.org/" target="_blank" rel="noopener" aria-label="Visit Rocky Linux" class="badge preset-outlined-surface-500 text-xs hover:preset-filled-primary-500 transition-colors">Rocky Linux</a>
68<!--]--><!--[0--><a href="https://solr.apache.org/" target="_blank" rel="noopener" aria-label="Visit Apache Solr" class="badge preset-outlined-surface-500 text-xs hover:preset-filled-primary-500 transition-colors">Apache Solr</a><!--]--><!--[0--><a href="https://skeleton.dev/" target="_blank" rel="noopener" aria-label="Visit Skeleton UI" class="badge preset-outlined-surface-500 text-xs hover:preset-filled-primary-500 transition-colors">Skeleton UI</a><!--]--><!--[0--><a href="https://github.com/searxng/searxng" target="_blank" rel="noopener" aria-label="Visit SearXNG" class="badge preset-outlined-surface-500 text-xs hover:preset-filled-primary-500 transition-colors">SearXNG</a><!--]--><!--[0--><a href="https://keepassxc.org/" target="_blank" rel="noopener" aria-label="Visit KeePassXC" class="badge preset-outlined-surface-500 text-xs hover:preset-filled-primary-500 transition-colors">KeePassXC</a><!--]--><!--[0--><a href="https://futhark-lang.org/" target="_blank" rel="noopener" aria-label="Visit Futhark" class="badge preset-outlined-surface-500 text-xs hover:preset-filled-primary-500 transition-colors">Futhark</a><!--]--><!--[0--><a href="https://github.com/caddyserver/xcaddy" target="_blank" rel="noopener" aria-label="Visit xCaddy" class="badge preset-outlined-surface-500 text-xs hover:preset-filled-primary-500 transition-colors">xCaddy</a><!--]--><!--[0--><a href="https://github.com/qutebrowser/qutebrowser" target="_blank" rel="noopener" aria-label="Visit qutebrowser" class="badge preset-outlined-surface-500 text-xs hover:preset-filled-primary-500 transition-colors">qutebrowser</a><!--]--><!--[0--><a href="https://github.com/pytest-dev/pytest" target="_blank" rel="noopener" aria-label="Visit pytest" class="badge preset-outlined-surface-500 text-xs hover:preset-filled-primary-500 transition-colors">pytest</a><!--]--><!--[0--><a href="https://github.com/Klipper3d/klipper" target="_blank" rel="noopener" aria-label="Visit Klipper" class="badge preset-outlined-surface-500 text-xs hover:preset-filled-primary-500 transition-colors">Klipper</a><!--]--><!--[0--><a href="https://buddiesofbudgie.org/" target="_blank" rel="noopener" aria-label="Visit Budgie Desktop" class="badge preset-outlined-surface-500 text-xs hover:preset-filled-primary-500 transition-colors">Budgie Desktop</a><!--]--><!--[0--><a href="https://tails.net/" target="_blank" rel="noopener" aria-label="Visit Tails" class="badge preset-outlined-surface-500 text-xs hover:preset-filled-primary-500 transition-colors">Tails</a><!--]--><!--]--></div><!--[0--><h4 class="text-xs font-semibold uppercase tracking-wider text-surface-400 mt-3 mb-1.5 first:mt-0">Sponsoring</h4><!--]--> <div class="flex flex-wrap gap-1.5 mb-1"><!--[--><!--[0--><a href="https://github.com/The-Compiler" target="_blank" rel="noopener" aria-label="Visit The-Compiler" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">The-Compiler</a><!--]--><!--[0--><a href="https://github.com/Xe" target="_blank" rel="noopener" aria-label="Visit Xe Iaso" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">Xe Iaso</a><!--]--><!--[0--><a href="https://github.com/skeletonlabs" target="_blank" rel="noopener" aria-label="Visit Skeleton Labs" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">Skeleton Labs</a><!--]--><!--[0--><a href="https://github.com/purpl3F0x" target="_blank" rel="noopener" aria-label="Visit purpl3F0x" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">purpl3F0x</a><!--]--><!--[0--><a href="https://www.eff.org/" target="_blank" rel="noopener" aria-label="Visit EFF" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">EFF</a><!--]--><!--[0--><a href="https://www.erininthemorning.com/" target="_blank" rel="noopener" aria-label="Visit Erin in the Morning" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">Erin in the Morning</a><!--]--><!--[0--><a href="https://theonion.com/" target="_blank" rel="noopener" aria-label="Visit The Onion" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">The Onion</a>
68<!--]--><!--]--></div><!--[0--><h4 class="text-xs font-semibold uppercase tracking-wider text-surface-400 mt-3 mb-1.5 first:mt-0">Ventures</h4><!--]--> <div class="flex flex-wrap gap-1.5 mb-1"><!--[--><!--[0--><a href="https://xoxd.ai" target="_blank" rel="noopener" aria-label="Visit xoxd.ai" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">xoxd.ai</a><!--]--><!--[0--><a href="https://tinyland.dev" target="_blank" rel="noopener" aria-label="Visit tinyland.dev" class="badge preset-outlined-primary-500 text-xs hover:preset-filled-primary-500 transition-colors">tinyland.dev</a><!--]--><!--]--></div><!--]--></div><!----> <div class="mt-6"><h4 class="text-xs font-semibold uppercase tracking-wider text-surface-400 mb-1.5">Topic Network</h4> <img src="/images/tag-graph.svg" alt="Tag Co-occurrence Network" loading="lazy" class="w-full"/><!----></div> <div class="mt-6 space-y-3"><h4 class="text-xs font-semibold uppercase tracking-wider text-surface-400">GitHub Activity</h4> <img src="/images/github-profile/github-stats.svg" alt="GitHub Stats" loading="lazy" class="w-full"/><!----> <img src="/images/github-profile/top-langs.svg" alt="Top Languages" loading="lazy" class="w-full"/><!----> <img src="/images/github-profile/repo-graph.svg" alt="Repository Similarity Graph" loading="lazy" class="w-full"/><!----> <img src="/images/github-profile/github-snake.svg" alt="Contribution Snake" loading="lazy" class="w-full"/><!----> <img src="https://streak-stats.demolab.com/?user=Jesssullivan&amp;theme=default&amp;hide_border=true" alt="GitHub Streak" loading="lazy" class="w-full"/><!----> <!--[-1--><!--]--></div><!--]--></div><!----> <hr class="border-surface-300-700"/> <aside class="space-y-8"><div><h3 class="font-heading text-sm font-bold uppercase tracking-wider text-surface-500 mb-3">Search</h3> <!--[-1--><div class="animate-pulse"><div class="w-full h-8 bg-surface-300/30"></div></div><!--]--></div> <!--[0--><div><h3 class="font-heading text-sm font-bold uppercase tracking-wider text-surface-500 mb-3">Recent Posts</h3> <ul class="space-y-3"><!--[--><li><a href="/blog/clearing-canon-5b00-lock-native-key-free-megatank-reset" class="block hover:text-primary-500 transition-colors" aria-label="Read recent post: Hacking Canon MegaTank and clearing 5B00 Lock: A Native Waste-Ink Reset over USB with Ghidra, Frida and friends"><span class="text-sm font-medium leading-tight line-clamp-2">Hacking Canon MegaTank and clearing 5B00 Lock: A Native Waste-Ink Reset over USB with Ghidra, Frida and friends</span> <time class="text-xs text-surface-500 mt-0.5 block">Jun 9, 2026</time></a></li><li><a href="/blog/glue-you-can-see-in-uv" class="block hover:text-primary-500 transition-colors" aria-label="Read recent post: Glue You Can See in UV"><span class="text-sm font-medium leading-tight line-clamp-2">Glue You Can See in UV</span> <time class="text-xs text-surface-500 mt-0.5 block">Jun 8, 2026</time></a></li><li><a href="/blog/week-notes-scroll-wheels-and-chasing-the-sun" class="block hover:text-primary-500 transition-colors" aria-label="Read recent post: Week Notes: scroll wheels, spring legs, and chasing the sun"><span class="text-sm font-medium leading-tight line-clamp-2">Week Notes: scroll wheels, spring legs, and chasing the sun</span> <time class="text-xs text-surface-500 mt-0.5 block">Jun 8, 2026</time></a></li><li><a href="/blog/gingersnap-cookies" class="block hover:text-primary-500 transition-colors" aria-label="Read recent post: Gingersnap Cookies (from a milk-free, soy-free recipe card)"><span class="text-sm font-medium leading-tight line-clamp-2">Gingersnap Cookies (from a milk-free, soy-free recipe card)</span> <time class="text-xs text-surface-500 mt-0.5 block">May 29, 2026</time></a></li><li><a href="/blog/trashmonitor-tailnet-window-into-the-hardware-pile" class="block hover:text-primary-500 transition-colors" aria-label="Read recent post: Trashmonitor to oggle my goggles and behold the blinkenlights"><span class="text-sm font-medium leading-tight line-clamp-2">Trashmonitor to oggle my goggles and behold the blinkenlights</span> <time class="text-xs text-surface-500 mt-0.5 block">May 11, 2026</time></a></li>
68<!--]--></ul></div><!--]--> <!--[0--><div><h3 class="font-heading text-sm font-bold uppercase tracking-wider text-surface-500 mb-3">Tags</h3> <div class="flex flex-wrap gap-1.5"><!--[--><a href="/blog/tag/3d-printing" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged 3d-printing">3d-printing</a><a href="/blog/tag/5b00" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged 5b00">5b00</a><a href="/blog/tag/8311" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged 8311">8311</a><a href="/blog/tag/Birding" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged Birding">Birding</a><a href="/blog/tag/Chapel" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged Chapel">Chapel</a><a href="/blog/tag/Classes" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged Classes">Classes</a><a href="/blog/tag/DIY" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged DIY">DIY</a><a href="/blog/tag/DevOps" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged DevOps">DevOps</a><a href="/blog/tag/Dhall" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged Dhall">Dhall</a><a href="/blog/tag/Docs" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged Docs">Docs</a><a href="/blog/tag/Electrostatic" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged Electrostatic">Electrostatic</a><a href="/blog/tag/Featured" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged Featured">Featured</a><a href="/blog/tag/Fitness" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged Fitness">Fitness</a><a href="/blog/tag/Headphones" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged Headphones">Headphones</a><a href="/blog/tag/How-To" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged How-To">How-To</a><a href="/blog/tag/Ideas" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged Ideas">Ideas</a><a href="/blog/tag/Music" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged Music">Music</a><a href="/blog/tag/NUMA" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged NUMA">NUMA</a><a href="/blog/tag/Nature%20Observations" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged Nature Observations">Nature Observations</a><a href="/blog/tag/Networking" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged Networking">Networking</a><a href="/blog/tag/Nix" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged Nix">Nix</a><a href="/blog/tag/PBT" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged PBT">PBT</a><a href="/blog/tag/Photography" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged Photography">Photography</a><a href="/blog/tag/Planar" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged Planar">Planar</a><a href="/blog/tag/Python" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged Python">Python</a><a href="/blog/tag/RT" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged RT">RT</a><a href="/blog/tag/Reviews" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged Reviews">Reviews</a>
68<a href="/blog/tag/Tailscale" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged Tailscale">Tailscale</a><a href="/blog/tag/Waxwing%20Audio" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged Waxwing Audio">Waxwing Audio</a><a href="/blog/tag/active-directory" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged active-directory">active-directory</a><a href="/blog/tag/allergen-friendly" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged allergen-friendly">allergen-friendly</a><a href="/blog/tag/ambienttalk" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged ambienttalk">ambienttalk</a><a href="/blog/tag/ansible" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged ansible">ansible</a><a href="/blog/tag/apple-vision" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged apple-vision">apple-vision</a><a href="/blog/tag/arcmap" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged arcmap">arcmap</a><a href="/blog/tag/asm2362" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged asm2362">asm2362</a><a href="/blog/tag/automotive" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged automotive">automotive</a><a href="/blog/tag/baking" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged baking">baking</a><a href="/blog/tag/baking-science" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged baking-science">baking-science</a><a href="/blog/tag/bci" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged bci">bci</a><a href="/blog/tag/bed-adhesion" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged bed-adhesion">bed-adhesion</a><a href="/blog/tag/birding" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged birding">birding</a><a href="/blog/tag/canon" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged canon">canon</a><a href="/blog/tag/chemistry" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged chemistry">chemistry</a><a href="/blog/tag/climbing" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged climbing">climbing</a><a href="/blog/tag/cmux" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged cmux">cmux</a><a href="/blog/tag/cnc" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged cnc">cnc</a><a href="/blog/tag/collaboration" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged collaboration">collaboration</a><a href="/blog/tag/community" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged community">community</a><a href="/blog/tag/cookies" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged cookies">cookies</a><a href="/blog/tag/cornell" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged cornell">cornell</a><a href="/blog/tag/covid-19" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged covid-19">covid-19</a><a href="/blog/tag/crs309" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged crs309">crs309</a><a href="/blog/tag/crypto" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged crypto">crypto</a><a href="/blog/tag/ctap2" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged ctap2">ctap2</a><a href="/blog/tag/cv" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged cv">cv</a>
68<a href="/blog/tag/cycling" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged cycling">cycling</a><a href="/blog/tag/data-wrangling" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged data-wrangling">data-wrangling</a><a href="/blog/tag/devops" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged devops">devops</a><a href="/blog/tag/dhall" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged dhall">dhall</a><a href="/blog/tag/diy" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged diy">diy</a><a href="/blog/tag/ecology" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged ecology">ecology</a><a href="/blog/tag/fabrication" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged fabrication">fabrication</a><a href="/blog/tag/ffi" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged ffi">ffi</a><a href="/blog/tag/ffmpeg" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged ffmpeg">ffmpeg</a><a href="/blog/tag/fiber" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged fiber">fiber</a><a href="/blog/tag/fidium" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged fidium">fidium</a><a href="/blog/tag/fido2" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged fido2">fido2</a><a href="/blog/tag/fieldwork" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged fieldwork">fieldwork</a><a href="/blog/tag/foss" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged foss">foss</a><a href="/blog/tag/fpga" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged fpga">fpga</a><a href="/blog/tag/frida" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged frida">frida</a><a href="/blog/tag/g6020" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged g6020">g6020</a><a href="/blog/tag/g988" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged g988">g988</a><a href="/blog/tag/ghidra" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged ghidra">ghidra</a><a href="/blog/tag/gingersnap" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged gingersnap">gingersnap</a><a href="/blog/tag/gis" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged gis">gis</a><a href="/blog/tag/gonetspeed" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged gonetspeed">gonetspeed</a><a href="/blog/tag/hardware" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged hardware">hardware</a><a href="/blog/tag/higher-education" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged higher-education">higher-education</a><a href="/blog/tag/homelab" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged homelab">homelab</a><a href="/blog/tag/indeterminism" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged indeterminism">indeterminism</a><a href="/blog/tag/isam" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged isam">isam</a><a href="/blog/tag/jazz" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged jazz">jazz</a><a href="/blog/tag/keychain" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged keychain">keychain</a><a href="/blog/tag/klipper" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged klipper">klipper</a><a href="/blog/tag/kml" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged kml">kml</a><a href="/blog/tag/kubernetes" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged kubernetes">kubernetes</a><a href="/blog/tag/linux" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged linux">linux</a><a href="/blog/tag/llvm" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged llvm">llvm</a><a href="/blog/tag/low-level" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged low-level">low-level</a><a href="/blog/tag/macOS" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged macOS">macOS</a><a href="/blog/tag/macos" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged macos">macos</a><a href="/blog/tag/maker" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged maker">maker</a><a href="/blog/tag/makerspace" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged makerspace">makerspace</a><a href="/blog/tag/mediamtx" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged mediamtx">mediamtx</a><a href="/blog/tag/megatank" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged megatank">megatank</a><a href="/blog/tag/mental-health" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged mental-health">mental-health</a><a href="/blog/tag/metal" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged metal">metal</a><a href="/blog/tag/mikrotik" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged mikrotik">mikrotik</a><a href="/blog/tag/molecule" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged molecule">molecule</a><a href="/blog/tag/mushrooms" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged mushrooms">mushrooms</a><a href="/blog/tag/music" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged music">music</a><a href="/blog/tag/nature" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged nature">nature</a><a href="/blog/tag/new-hampshire" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged new-hampshire">new-hampshire</a><a href="/blog/tag/nix" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged nix">nix</a><a href="/blog/tag/nixos" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged nixos">nixos</a><a href="/blog/tag/nokia" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged nokia">nokia</a><a href="/blog/tag/notifications" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged notifications">notifications</a><a href="/blog/tag/nvme" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged nvme">nvme</a><a href="/blog/tag/objc" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged objc">objc</a><a href="/blog/tag/observations" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged observations">observations</a><a href="/blog/tag/ocr" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged ocr">ocr</a><a href="/blog/tag/omci" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged omci">omci</a><a href="/blog/tag/ont" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged ont">ont</a><a href="/blog/tag/open-source" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged open-source">open-source</a><a href="/blog/tag/ornithology" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged ornithology">ornithology</a><a href="/blog/tag/personal" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged personal">personal</a><a href="/blog/tag/photography" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged photography">photography</a><a href="/blog/tag/ppe" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged ppe">ppe</a><a href="/blog/tag/promise-theory" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged promise-theory">promise-theory</a><a href="/blog/tag/psrp" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged psrp">psrp</a><a href="/blog/tag/qgis" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged qgis">qgis</a><a href="/blog/tag/qutebrowser" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged qutebrowser">qutebrowser</a><a href="/blog/tag/r" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged r">r</a><a href="/blog/tag/recipe" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged recipe">recipe</a><a href="/blog/tag/reproducibility" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged reproducibility">reproducibility</a><a href="/blog/tag/resume" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged resume">resume</a><a href="/blog/tag/reverse-engineering" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged reverse-engineering">reverse-engineering</a><a href="/blog/tag/right-to-repair" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged right-to-repair">right-to-repair</a><a href="/blog/tag/scsi" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged scsi">scsi</a><a href="/blog/tag/social-good" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged social-good">social-good</a><a href="/blog/tag/software" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged software">software</a><a href="/blog/tag/ssd-recovery" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged ssd-recovery">ssd-recovery</a><a href="/blog/tag/startups" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged startups">startups</a><a href="/blog/tag/streaming" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged streaming">streaming</a><a href="/blog/tag/sveltekit" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged sveltekit">sveltekit</a><a href="/blog/tag/swift" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged swift">swift</a><a href="/blog/tag/tailscale" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged tailscale">tailscale</a><a href="/blog/tag/tcfs" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged tcfs">tcfs</a>
68<a href="/blog/tag/test" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged test">test</a><a href="/blog/tag/update" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged update">update</a><a href="/blog/tag/usb-bridge" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged usb-bridge">usb-bridge</a><a href="/blog/tag/usb-protocol" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged usb-protocol">usb-protocol</a><a href="/blog/tag/usbmon" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged usbmon">usbmon</a><a href="/blog/tag/was-110" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged was-110">was-110</a><a href="/blog/tag/weeknotes" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged weeknotes">weeknotes</a><a href="/blog/tag/windows" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged windows">windows</a><a href="/blog/tag/winrm" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged winrm">winrm</a><a href="/blog/tag/xgs-pon" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged xgs-pon">xgs-pon</a><a href="/blog/tag/xoxdwm" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged xoxdwm">xoxdwm</a><a href="/blog/tag/xr" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged xr">xr</a><a href="/blog/tag/xram" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged xram">xram</a><a href="/blog/tag/zig" class="badge preset-outlined-surface-500 text-xs hover:preset-outlined-primary-500 transition-colors" aria-label="View posts tagged zig">zig</a><!--]--></div></div><!--]--></aside><!----></div></div></div></div><!--]--><!----></main><!--]--> <footer class="bg-surface-100-900 border-t border-surface-300-700 py-6 text-center text-sm text-surface-500"><div class="container mx-auto px-4 flex flex-wrap items-center justify-center gap-x-4 gap-y-2"><p>Dedicated to the <a href="https://creativecommons.org/publicdomain/zero/1.0/" class="hover:text-primary-500 transition-colors underline" target="_blank" rel="noopener">public domain</a></p> <span class="text-surface-400">|</span> <a href="/feed.xml" class="hover:text-primary-500 transition-colors">RSS</a> <span class="text-surface-400">|</span> <a href="/feed.json" class="hover:text-primary-500 transition-colors">JSON</a> <span class="text-surface-400">|</span> <a href="/THIRD-PARTY-LICENSES" class="hover:text-primary-500 transition-colors">Licenses</a></div> <p class="mt-2 text-xs text-surface-400">Static site built with <a href="https://svelte.dev/docs/kit" class="hover:text-primary-500 transition-colors underline" target="_blank" rel="noopener">SvelteKit</a> &amp; <a href="https://www.skeleton.dev" class="hover:text-primary-500 transition-colors underline" target="_blank" rel="noopener">Skeleton</a> — <a href="https://github.com/Jesssullivan/jesssullivan.github.io" class="hover:text-primary-500 transition-colors underline" target="_blank" rel="noopener">source</a></p></footer></div><!--]--><!--]--> <!--[-1--><!--]--><!--]-->
69			
70			
70<script>
71				{
72					__sveltekit_bcum2g = {
73						base: new URL(".", location).pathname.slice(0, -1)
74					};
75
76					const element = document.currentScript.parentElement;
77
78					Promise.all([
79						import("./_app/immutable/entry/start.Cel6CUMU.js"),
80						import("./_app/immutable/entry/app.BpTExKld.js")
81					]).then(([kit, app]) => {
82						kit.start(app, element, {
83							node_ids: [0, 6],
84							data: [null,null],
85							form: null,
86							error: null
87						});
88					});
89				}
90			</script>
90
91		</div>
92	</body>
93</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.