PageSourceSearch

https://alpacasoft.dev/writing

html alpacasoft.dev collected 2026-10-02 01:52:09 UTC 11,851 bytes, 62 lines download raw bytes

1<!doctype html>
2<html lang="en">
3	<head>
4		<meta charset="utf-8" />
5		<meta name="viewport" content="width=device-width, initial-scale=1" />
6		<meta name="text-scale" content="scale" />
7		
7<script>
8			// Apply a saved light-theme choice before first paint. Dark is the
9			// default, so a missing or unreadable choice needs no work.
10			try {
11				if (localStorage.getItem('theme') === 'light')
12					document.documentElement.dataset.theme = 'light';
13			} catch {}
14		</script>
14
15		<link href="./_app/immutable/entry/start.CY_o5TsX.js" rel="modulepreload">
16		<link href="./_app/immutable/chunks/CwmI773r.js" rel="modulepreload">
17		<link href="./_app/immutable/chunks/xfE-XCam.js" rel="modulepreload">
18		<link href="./_app/immutable/chunks/DK3Fl9T5.js" rel="modulepreload">
19		<link href="./_app/immutable/chunks/BuFlayix.js" rel="modulepreload">
20		<link href="./_app/immutable/entry/app.Dvkk63p0.js" rel="modulepreload">
21		<link href="./_app/immutable/chunks/xihTtKlq.js" rel="modulepreload">
22		<link href="./_app/immutable/nodes/0.CsXU4QIE.js" rel="modulepreload">
23		<link href="./_app/immutable/chunks/C6jIA3BA.js" rel="modulepreload">
24		<link href="./_app/immutable/chunks/CLoItuXT.js" rel="modulepreload">
25		<link href="./_app/immutable/chunks/DrM-6fyx.js" rel="modulepreload">
26		<link href="./_app/immutable/chunks/Cr94zUSV.js" rel="modulepreload">
27		<link href="./_app/immutable/chunks/BbhhFIpQ.js" rel="modulepreload">
28		<link href="./_app/immutable/nodes/9.DscftbI5.js" rel="modulepreload">
29		<link href="./_app/immutable/chunks/ByK75BNJ.js" rel="modulepreload">
30		<link href="./_app/immutable/chunks/Dl1r3Lst.js" rel="modulepreload">
31		<!--12qhfyh--><link rel="icon" href="/_app/immutable/assets/favicon.ClUV8pJY.png"/> <link rel="apple-touch-icon" href="/_app/immutable/assets/favicon.ClUV8pJY.png"/><!----><!--gsrl61--><meta name="description" content="Essays and interactive pieces by Will Mitchell on AI, building software, and the odd things he makes."/> <link rel="canonical" href="https://alpacasoft.dev/writing"/> <meta property="og:type" content="website"/> <meta property="og:title" content="Writing · Alpaca Software"/> <meta property="og:description" content="Essays and interactive pieces by Will Mitchell on AI, building software, and the odd things he makes."/> <meta property="og:url" content="https://alpacasoft.dev/writing"/> <meta property="og:site_name" content="Alpaca Software"/> <meta property="og:image" content="https://alpacasoft.dev/og.png"/> <meta name="twitter:card" content="summary_large_image"/> <meta name="twitter:title" content="Writing · Alpaca Software"/> <meta name="twitter:description" content="Essays and interactive pieces by Will Mitchell on AI, building software, and the odd things he makes."/> <meta name="twitter:image" content="https://alpacasoft.dev/og.png"/><!----><title>Writing · Alpaca Software</title>
32		<link href="./_app/immutable/assets/0.DV_VXbU6.css" rel="stylesheet">
33	</head>
34	<body data-sveltekit-preload-data="hover"><a href="https://alpacasoft.dev/cdn-cgi/content?id=r7ID4KB31bjH.twIssSRPdNbSK1FzvjCkuyGQKrfgy4-1790905929.013317-1.2.1.1-P6Zh4SS6RcxVpdtxrosUajVtvY.T8Jv40_r8lJlF8_2TtPqsV_PQSTTaZFIIvQ2I" aria-hidden="true" rel="nofollow noopener" style="display: none !important; visibility: hidden !important"></a>
35		<div style="display: contents"><!--[--><!--[0--><!--[--><div class="atmosphere" aria-hidden="true"></div> <div class="grain" aria-hidden="true"></div> <a href="#main" class="sr-only rounded bg-accent-fill px-4 py-2 font-mono text-sm text-on-accent focus:not-sr-only focus:absolute focus:top-4 focus:left-4 focus:z-50">Skip to content</a> <div class="flex min-h-dvh flex-col"><header class="sticky top-0 z-40 border-b border-line/70 bg-ground/80 backdrop-blur supports-[backdrop-filter]:bg-ground/60"><div class="mx-auto flex max-w-5xl items-center justify-between gap-4 px-5 py-3.5 sm:px-6 lg:px-8"><a href="/" class="group flex items-center gap-2.5" aria-label="Alpaca Software — home"><img src="/_app/immutable/assets/will-avatar.DbinewZQ.jpg" alt="" width="32" height="32" class="rounded-full border border-line-bright transition-transform duration-300 group-hover:-rotate-6"/> <span class="font-mono text-sm font-medium tracking-tight text-fg">alpaca<span class="text-fg-faint">·</span>soft</span></a> <nav id="primary-nav" aria-label="Primary" class="font-mono text-[0.8125rem] sm:static sm:ml-auto sm:flex sm:flex-row sm:items-center sm:gap-1 sm:border-0 sm:bg-transparent sm:p-0 sm:backdrop-blur-none hidden"><!--[--><a href="/work" class="rounded px-2.5 py-1.5 transition-colors hover:text-accent text-fg-dim"><!--[-1--><!--]-->work</a><a href="/writing" aria-current="page" class="rounded px-2.5 py-1.5 transition-colors hover:text-accent text-accent"><!--[0--><span class="text-fg-faint">/</span><!--]-->writing</a><a href="/now" class="rounded px-2.5 py-1.5 transition-colors hover:text-accent text-fg-dim"><!--[-1--><!--]-->now</a><a href="/about" class="rounded px-2.5 py-1.5 transition-colors hover:text-accent text-fg-dim"><!--[-1--><!--]-->about</a><!--]--></nav> <div class="flex items-center gap-1 sm:-mr-1.5"><button type="button" class="group rounded p-1.5 text-fg-dim transition-colors hover:text-accent" aria-label="Switch to light theme" title="Light theme" data-theme-toggle="dark"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" aria-hidden="true" class="transition-transform duration-500 ease-out group-hover:rotate-[20deg]"><!--[0--><circle cx="12" cy="12" r="4"></circle><path d="M12 2.5v2M12 19.5v2M2.5 12h2M19.5 12h2M5.3 5.3l1.4 1.4M17.3 17.3l1.4 1.4M5.3 18.7l1.4-1.4M17.3 6.7l1.4-1.4"></path><!--]--></svg></button><!----> <button type="button" class="-mr-1.5 rounded p-1.5 text-fg-dim transition-colors hover:text-accent sm:hidden" aria-expanded="false" aria-controls="primary-nav" aria-label="Open menu"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" aria-hidden="true"><!--[-1--><path d="M3 7h18M3 12h18M3 17h18"></path><!--]--></svg></button></div></div></header><!---->
35 <main id="main" class="flex-1"><!--[--><!----> <section class="mx-auto max-w-3xl px-5 py-12 sm:px-6 sm:py-16 lg:px-8 lg:py-20"><p class="prompt reveal">tail -f ~/writing</p> <h1 class="reveal page-title mt-3">Writing</h1> <p class="reveal mt-4 text-lg text-pretty text-fg-dim">AI, building software, and whatever I'm tinkering with. Some pieces are interactive and live on
36		their own sites. <a href="/rss.xml" class="link-anim" data-sveltekit-reload="">RSS ↗</a></p> <!--[0--><div class="mt-8 flex flex-wrap gap-2 font-mono text-xs"><!--[--><button aria-pressed="false" class="rounded-full border px-3 py-1 transition-colors border-line text-fg-dim hover:border-accent/50 hover:text-accent">#ai</button><button aria-pressed="false" class="rounded-full border px-3 py-1 transition-colors border-line text-fg-dim hover:border-accent/50 hover:text-accent">#interactive</button><!--]--></div><!--]--> <ul class="mt-10 divide-y divide-line/60"><!--[--><li><a href="https://paradox.alpacasoft.dev" class="group block py-6" target="_blank" rel="noopener"><div class="flex items-baseline justify-between gap-4"><h2 class="section-title text-fg transition-colors group-hover:text-accent">The Alpaca Paradox<!--[0--><span class="text-fg-faint">↗</span><!--]--></h2> <time class="shrink-0 font-mono text-xs text-fg-faint" datetime="2026-09-15">September 15, 2026</time></div> <p class="mt-2 text-pretty text-fg-dim">Taking a 10% AI-extinction forecast literally. An interactive model of the claim where you can change every assumption and watch 10,000 futures respond.</p> <!--[0--><p class="mt-2 font-mono text-xs text-fg-faint">paradox.alpacasoft.dev</p><!--]--></a></li><!--]--></ul></section><!--]--><!----></main> <footer class="mt-16 border-t border-line/70 sm:mt-20"><div class="mx-auto max-w-5xl px-5 py-12 sm:px-6 lg:px-8"><div class="flex flex-col gap-10 sm:flex-row sm:justify-between"><div class="max-w-xs"><p class="prompt">cat ~/about</p> <p class="mt-2 text-sm leading-relaxed text-pretty text-fg-dim">Will Mitchell, TheAlpacalypse most places. Builds fun, usually free software: 40K tools, games, and AI experiments. Founder of Alpaca Software, LLC.</p> <a href="https://www.patreon.com/AlpacaSoftware" target="_blank" rel="noopener" class="mt-5 inline-flex items-center gap-2 rounded-full border border-accent/30 bg-accent-fill/15 px-4 py-1.5 font-mono text-xs text-accent transition-colors hover:bg-accent-fill/25">♥ Support the work</a></div> <nav class="font-mono text-sm" aria-label="Social and contact"><p class="prompt mb-3">ls ~/links</p> <ul class="space-y-2"><!--[--><li class="flex items-baseline gap-3"><span class="w-16 shrink-0 text-fg-faint">git/</span> <a href="https://github.com/wn-mitch" target="_blank" rel="noopener" class="link-anim">@wn-mitch</a></li><li class="flex items-baseline gap-3"><span class="w-16 shrink-0 text-fg-faint">in/</span> <a href="https://www.linkedin.com/in/will--mitch/" target="_blank" rel="noopener" class="link-anim">in/will--mitch</a></li><li class="flex items-baseline gap-3"><span class="w-16 shrink-0 text-fg-faint">bsky/</span> <a href="https://bsky.app/profile/thealpacalypse.bsky.social" target="_blank" rel="noopener" class="link-anim">@thealpacalypse</a></li><!--]--> <li class="flex items-baseline gap-3"><span class="w-16 shrink-0 text-fg-faint">mail/</span> <a href="#" class="link-anim">email me</a><!----></li> <li class="flex items-baseline gap-3"><span class="w-16 shrink-0 text-fg-faint">cv/</span> <a href="/resume" class="link-anim">résumé</a></li></ul></nav></div> <div class="mt-10 flex flex-col gap-2 border-t border-line/50 pt-6 font-mono text-xs text-fg-faint sm:flex-row sm:items-center sm:justify-between"><span>© 2026 Alpaca Software, LLC</span> <span>built with SvelteKit · deployed on Cloudflare</span></div></div></footer><!----></div><!--]--><!--]--> <!--[-1--><!--]--><!--]-->
37			
38			
38<script>
39				{
40					__sveltekit_96jn9b = {
41						base: new URL(".", location).pathname.slice(0, -1)
42					};
43
44					const element = document.currentScript.parentElement;
45
46					Promise.all([
47						import("./_app/immutable/entry/start.CY_o5TsX.js"),
48						import("./_app/immutable/entry/app.Dvkk63p0.js")
49					]).then(([kit, app]) => {
50						kit.start(app, element, {
51							node_ids: [0, 9],
52							data: [null,null],
53							form: null,
54							error: null
55						});
56					});
57				}
58			</script>
58
59		</div>
60	
60<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"8d788180add240b895da2ea2e0528eef","r":1,"spa":2}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 60
60
61<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a44010e85a0c52ca',t:'MTc5MDkwNTkyOQ=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
61</body>
62</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.