1<!DOCTYPE html><html lang="en" class="__variable_245d8d __variable_97c177 __variable_bc4999 __variable_e2853d __variable_f48c3b __variable_ac4600 __variable_158bdc __variable_054274 __variable_2c828a __variable_eb3077 __variable_df1539 dark" style="color-scheme:dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/f866d85db2ebdd27.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/c92fb400e616be00.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-7d06e74f8186591f.js"/>
1<script src="/_next/static/chunks/4bd1b696-c023c6e3521b1417.js" async=""></script>
1<script src="/_next/static/chunks/255-ebd51be49873d76c.js" async=""></script>
1<script src="/_next/static/chunks/main-app-f9b5d20365cb8be2.js" async=""></script>
1<script src="/_next/static/chunks/app/layout-36b586036a21bc8e.js" async=""></script>
1<script src="/_next/static/chunks/237-3747e27f15cc85e7.js" async=""></script>
1<script src="/_next/static/chunks/588-01a222faf12acc42.js" async=""></script>
1<script src="/_next/static/chunks/202-f106c4441f64a8d1.js" async=""></script>
1<script src="/_next/static/chunks/220-dbf9c36cbd02535c.js" async=""></script>
1<script src="/_next/static/chunks/app/%5Bproject%5D/layout-d3207db32338196d.js" async=""></script>
1<script src="/_next/static/chunks/911-e191e1cf10e33582.js" async=""></script>
1<script src="/_next/static/chunks/app/%5Bproject%5D/page-5475da8ea705b707.js" async=""></script>
1<meta name="next-size-adjust" content=""/>
1<script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script>
1</head><body class="__className_bc4999"><div hidden=""><!--$?--><template id="B:0"></template><!--/$--></div>
1<script>(function(){try{localStorage.setItem('theme','dark')}catch(e){}document.cookie='theme=dark; path=/; max-age=31536000; SameSite=Lax';})();</script>
1<script>((a,b,c,d,e,f,g,h)=>{let i=document.documentElement,j=["light","dark"];function k(b){var c;(Array.isArray(a)?a:[a]).forEach(a=>{let c="class"===a,d=c&&f?e.map(a=>f[a]||a):e;c?(i.classList.remove(...d),i.classList.add(b)):i.setAttribute(a,b)}),c=b,h&&j.includes(c)&&(i.style.colorScheme=c)}if(d)k(d);else try{let a=localStorage.getItem(b)||c,d=g&&"system"===a?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a;k(d)}catch(a){}})("class","theme","dark","dark",["light","dark"],null,false,true)</script>
1<div class="min-h-screen bg-background text-foreground selection:bg-primary selection:text-primary-foreground"><nav class="w-full z-50 bg-background/80 border-b border-border backdrop-blur-md transition-all duration-500 sticky top-0 opacity-100 translate-y-0 "><div class="overflow-hidden select-none absolute inset-0"></div><div class="relative z-10 mx-auto max-w-6xl px-6 pointer-events-none"><div class="flex items-center justify-between h-12 pt-1"><a class="font-geist-pixel-square text-base uppercase tracking-[0.2em] pointer-events-auto px-2 py-1 rounded hover:bg-foreground/10 transition-colors" href="/">Ryan Bolick</a><div class="flex items-center gap-1 text-xs uppercase tracking-[0.2em] font-geist-pixel-grid text-foreground pointer-events-auto"><a href="/#resources" class="hover:text-foreground hover:font-geist-pixel hover:bg-foreground/10 px-3 py-1.5 rounded transition-colors hidden md:block">Resources</a><a href="/#teaching" class="hover:text-foreground hover:font-geist-pixel hover:bg-foreground/10 px-3 py-1.5 rounded transition-colors hidden md:block">Teaching</a><a href="/#contact" class="hover:text-foreground hover:font-geist-pixel hover:bg-foreground
1/10 px-3 py-1.5 rounded transition-colors">Get in touch</a></div></div></div></nav><main class="mx-auto max-w-3xl px-4 pb-8"><div class="space-y-12"><div class="border-t border-border relative -mx-[calc(50vw-50%)] w-screen"></div><div class="space-y-6"><h1 class="text-3xl lg:text-5xl font-bold tracking-tight font-geist-pixel-square">Byline</h1><p class="text-base lg:text-lg text-foreground leading-relaxed font-geist-pixel-triangle">The writing platform built for AI in education.</p><a href="https://bylinedocs.com" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-4 py-2 text-sm font-medium bg-foreground text-background rounded-full hover:bg-foreground/90 transition-colors">Get started free<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link ml-1.5 w-3.5 h-3.5"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></a></div><div class="border-t border-border relative -mx-[calc(50vw-50%)] w-screen"></div><div class="flex flex-col gap-4"><div class="relative w-full aspect-video"><img alt="Byline" loading="lazy" decoding="async" data-nimg="fill" class="object-cover rounded-lg" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="/images/works/byline-preview.jpeg"/></div><div class="flex flex-col gap-4 text-sm pt-6"><div class="flex flex-col sm:flex-row sm:items-center gap-2 sm:gap-4"><div class="text-foreground font-geist-pixel-line uppercase tracking-[0.2em] whitespace-nowrap mt-0.5 w-28 flex-shrink-0">Domains</div><div class="flex flex-wrap gap-2 gap-y-1"><span class="px-3 py-1 outline outline-1 outline-border bg-background text-muted-foreground whitespace-nowrap rounded-full">AI</span><span class="px-3 py-1 outline outline-1 outline-border bg-background text-muted-foreground whitespace-nowrap rounded-full">Writing</span><span class="px-3 py-1 outline outline-1 outline-border bg-background text-muted-foreground whitespace-nowrap rounded-full">Education</span><span class="px-3 py-1 outline outline-1 outline-border bg-background text-muted-foreground whitespace-nowrap rounded-full">Product</span><span class="px-3 py-1 outline outline-1 outline-border bg-background text-muted-foreground whitespace-nowrap rounded-full">Web</span></div></div><div class="flex flex-col sm:flex-row sm:items-center gap-2 sm:gap-4"><div class="text-foreground font-geist-pixel-line uppercase tracking-[0.2em] whitespace-nowrap mt-0.5 w-28 flex-shrink-0">Built with</div><div class="flex flex-wrap gap-2 gap-y-1"><span class="px-3 py-1 outline outline-1 outline-border bg-background text-muted-foreground whitespace-nowrap rounded-full">Next.js</span><span class="px-3 py-1 outline outline-1 outline-border bg-background text-muted-foreground whitespace-nowrap rounded-full">React</span><span class="px-3 py-1 outline outline-1 outline-border bg-background text-muted-foreground whitespace-nowrap rounded-full">Supabase</span><span class="px-3 py-1 outline outline-1 outline-border bg-background text-muted-foreground whitespace-nowrap rounded-full">Tailwind</span><span class="px-3 py-1 outline outline-1 outline-border bg-background text-muted-foreground whitespace-nowrap rounded-full">Vercel</span><span class="px-3 py-1 outline outline-1 outline-border bg-background text-muted-foreground whitespace-nowrap rounded-full">Stripe</span></div></div><div class="flex flex-col sm:flex-row sm:items-center gap-2 sm:gap-4"><div class="text-foreground font-geist-pixel-line uppercase tracking-[0.2em] whitespace-nowrap mt-0.5 w-28 flex-shrink-0">Team size</div><div class="flex flex-wrap gap-2 gap-y-1"><span class="px-3 py-1 outline outline-1 outline-border bg-background text-muted-foreground whitespace-nowrap rounded-full">1 + advisors</span></div></div><div class="flex flex-col sm:flex-row sm:items-center gap-2 sm:gap-4"><div class="text-foreground font-geist-pixel-line uppercase tracking-[0.2em] whitespace-nowrap mt-0.5 w-28 flex-shrink-0">My role</div><div class="flex flex-wrap gap-2 gap-y-1"><span class="px-3 py-1 outline outline-1 outline-border bg-background text-muted-foreground whitespace-nowrap rounded-full">Founder</span></div></div></div></div>
1<div class="border-t border-border relative -mx-[calc(50vw-50%)] w-screen"></div></div><!--$?--><template id="B:1"></template><!--/$--></main><div class="max-w-6xl mx-auto px-4 py-12"><div class="border-t border-border relative -mx-[calc(50vw-50%)] w-screen"></div><div class="space-y-6 pt-12"><div class=""><h2 class="inline-flex items-center gap-3 font-geist-pixel uppercase tracking-[0.28em] text-foreground text-xs sm:text-sm"><span class="h-2 w-2 bg-primary/70"></span>Some more of my work</h2></div><div class="relative w-full" role="region" aria-roledescription="carousel"><div class="overflow-hidden"><div class="flex -ml-4"><div role="group" aria-roledescription="slide" class="min-w-0 shrink-0 grow-0 pl-4 basis-full sm:basis-1/2 lg:basis-1/3"><a href="/shipitbot" class="group space-y-4 block"><div class="relative w-full aspect-video"><img alt="ShipItBot" loading="lazy" decoding="async" data-nimg="fill" class="object-cover rounded-lg transition-transform group-hover:scale-[1.02]" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="/images/works/shipitbot-preview.jpeg"/></div><div class="!mt-2"><h3 class="sr-only text-lg font-medium font-geist-pixel-square">ShipItBot</h3><p class="text-sm text-muted-foreground line-clamp-2">Turn ideas into something you (yes you) can build with AI.</p></div></a></div><div role="group" aria-roledescription="slide" class="min-w-0 shrink-0 grow-0 pl-4 basis-full sm:basis-1/2 lg:basis-1/3"><a href="/plause" class="group space-y-4 block"><div class="relative w-full aspect-video"><img alt="Plause" loading="lazy" decoding="async" data-nimg="fill" class="object-cover rounded-lg transition-transform group-hover:scale-[1.02]" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="/images/works/plause-preview.jpeg"/></div><div class="!mt-2"><h3 class="sr-only text-lg font-medium font-geist-pixel-square">Plause</h3><p class="text-sm text-muted-foreground line-clamp-2">Turn presentation feedback into results students can use.</p></div></a></div><div role="group" aria-roledescription="slide" class="min-w-0 shrink-0 grow-0 pl-4 basis-full sm:basis-1/2 lg:basis-1/3"><a href="/driver" class="group space-y-4 block"><div class="relative w-full aspect-video"><img alt="Driver" loading="lazy" decoding="async" data-nimg="fill" class="object-cover rounded-lg transition-transform group-hover:scale-[1.02]" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="/images/works/driver-preview.jpeg"/></div><div class="!mt-2"><h3 class="sr-only text-lg font-medium font-geist-pixel-square">Driver</h3><p class="text-sm text-muted-foreground line-clamp-2">AI workspace and docs for your codebase.</p></div></a></div><div role="group" aria-roledescription="slide" class="min-w-0 shrink-0 grow-0 pl-4 basis-full sm:basis-1/2 lg:basis-1/3"><a href="/vroom-queue" class="group space-y-4 block"><div class="relative w-full aspect-video"><img alt="Vroom Queue" loading="lazy" decoding="async" data-nimg="fill" class="object-cover rounded-lg transition-transform group-hover:scale-[1.02]" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="/images/works/vroom-queue-preview.jpeg"/></div><div class="!mt-2"><h3 class="sr-only text-lg font-medium font-geist-pixel-square">Vroom Queue</h3><p class="text-sm text-muted-foreground line-clamp-2">Race to set the order for anything.</p></div></a></div><div role="group" aria-roledescription="slide" class="min-w-0 shrink-0 grow-0 pl-4 basis-full sm:basis-1/2 lg:basis-1/3"><a href="/beathatch" class="group space-y-4 block"><div class="relative w-full aspect-video"><img alt="ÃeatHatch" loading="lazy" decoding="async" data-nimg="fill" class="object-cover rounded-lg transition-transform group-hover:scale-[1.02]" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="/images/works/beathatch-preview.jpeg"/></div><div class="!mt-2"><h3 class="sr-only text-lg font-medium font-geist-pixel-square">ÃeatHatch</h3><p class="text-sm text-muted-foreground line-clamp-2">Learn rhythm through beat creation.</p></div></a></div><div role="group" aria-roledescription="slide" class="min-w-0 shrink-0 grow-0 pl-4 basis-full sm:basis-1/2 lg:basis-1/3"><a href="/ai-powered-search" class="group space-y-4 block"><div class="relative w-full aspect-video"><img alt="AI Powered Search" loading="lazy" decoding="async" data-nimg="fill" class="object-cover rounded-lg transition-transform group-hover:scale-[1.02]" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="/images/works/ai-powered-search-preview.jpeg"/></div><div class="!mt-2"><h3 class="sr-only text-lg font-medium font-geist-pixel-square">AI Powered Search</h3><p class="text-sm text-muted-foreground line-clamp-2">AI search with curated quality sources.</p></div></a></div><div role="group" aria-roledescription="slide" class="min-w-0 shrink-0 grow-0 pl-4 basis-full sm:basis-1/2 lg:basis-1/3"><a href="/litelight" class="group space-y-4 block"><div class="relative w-full aspect-video"><img alt="âiteâight" loading="lazy" decoding="async" data-nimg="fill" class="object-cover rounded-lg transition-transform group-hover:scale-[1.02]" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="/images/works/litelight-preview.jpeg"/></div><div class="!mt-2"><h3 class="sr-only text-lg font-medium font-geist-pixel-square">âiteâight</h3><p class="text-sm text-muted-foreground line-clamp-2">Visualize AI energy costs in real-time.</p></div></a></div></div></div><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover:text-accent-foreground absolute rounded-full top-1/2 left-0 -translate-x-1/3 lg:-translate-x-14 -translate-y-8 bg-background border border-border shadow-lg hover:bg-accent disabled:opacity-0 transition-opacity h-10 w-10" disabled=""><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-left h-4 w-4"><path d="m12 19-7-7 7-7"></path><path d="M19 12H5"></path></svg><span class="sr-only">
1Previous slide</span></button><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover:text-accent-foreground absolute rounded-full top-1/2 right-0 translate-x-1/3 lg:translate-x-14 -translate-y-8 bg-background border border-border shadow-lg hover:bg-accent disabled:opacity-0 transition-opacity h-10 w-10" disabled=""><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-right h-4 w-4"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg><span class="sr-only">Next slide</span></button></div></div></div><footer class="relative "><div class="overflow-hidden select-none pointer-events-none absolute inset-0"><div class="flex flex-wrap leading-[32px] font-geist-pixel-square text-sm text-muted-foreground/10" style="width:0"></div></div><div class="relative z-10 py-20"><div class="mx-auto max-w-6xl px-6 space-y-5"><h2 class="text-2xl md:text-3xl font-geist-pixel-square uppercase tracking-[0.2em]">Ryan Bolick</h2><p class="text-base text-muted-foreground max-w-md text-balance">I build AI-native products and teach people how to ship them.</p><div class="flex items-center gap-4 pt-2"><a href="https://www.linkedin.com/in/rjbolick" target="_blank" rel="noopener noreferrer" class="text-muted-foreground hover:text-foreground transition-colors" aria-label="LinkedIn"><svg viewBox="0 0 24 24" fill="currentColor" class="h-4 w-4 hover:scale-125 transition-all duration-100"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"></path></svg></a><a href="mailto:[email protected]" class="text-muted-foreground hover:text-foreground transition-colors" aria-label="Email"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-mail w-[1.2rem] h-[1.2rem] hover:scale-125 transition-all duration-100"><rect width="20" height="16" x="2" y="4" rx="2"></rect><path d="m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7"></path></svg></a></div><div class="pt-6"><span class="text-xs font-geist-pixel-line uppercase tracking-[0.25em] text-muted-foreground">© <!-- -->2026</span></div></div></div></footer></div><!--$--><!--/$-->
1<script>requestAnimationFrame(function(){$RT=performance.now()});</script>
1<script src="/_next/static/chunks/webpack-7d06e74f8186591f.js" id="_R_" async=""></script>
1<div hidden id="S:1"></div>
1<script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){var c=a[b],e=a[b+1];null!==e.parentNode&&e.parentNode.removeChild(e);var f=c.parentNode;if(f){var g=c.previousSibling,h=0;do{if(c&&8===c.nodeType){var d=c.data;if("/$"===d||"/&"===d)if(0===h)break;else h--;else"$"!==d&&"$?"!==d&&"$~"!==d&&"$!"!==d&&"&"!==d||h++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;e.firstChild;)f.insertBefore(e.firstChild,c);g.data="$";g._reactRetry&&requestAnimationFrame(g._reactRetry)}}a.length=0}; 2$RC=function(a,b){if(b=document.getElementById(b))(a=document.getElementById(a))?(a.previousSibling.data="$~",$RB.push(a,b),2===$RB.length&&("number"!==typeof $RT?requestAnimationFrame($RV.bind(null,$RB)):(a=performance.now(),setTimeout($RV.bind(null,$RB),2300>a&&2E3<a?2300-a:$RT+300-a)))):b.parentNode.removeChild(b)};$RC("B:1","S:1")</script>
2<title>Ryan Bolick</title><meta name="description" content="Designer and engineer focused on building delightful interfaces with technical depth"/><meta property="og:title" content="Ryan Bolick"/><meta property="og:description" content="Designer and engineer focused on building delightful interfaces with technical depth"/><meta property="og:url" content="https://ryanbolick.com"/><meta property="og:site_name" content="Ryan Bolick"/><meta property="og:locale" content="en_US"/><meta property="og:image" content="https://ryanbolick.com/og-image.png"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:image:alt" content="Ryan Bolick - Designer and engineer focused on building delightful interfaces with technical depth"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="Ryan Bolick"/><meta name="twitter:description" content="Designer and engineer focused on building delightful interfaces with technical depth"/><meta name="twitter:image" content="https://ryanbolick.com/og-image.png"/><link rel="shortcut icon" href="/favicon-16x16.png"/><link rel="icon" href="/favicon.ico"/><link rel="apple-touch-icon" href="/apple-touch-icon.png"/>
2<script >document.querySelectorAll('body link[rel="icon"], body link[rel="apple-touch-icon"]').forEach(el => document.head.appendChild(el))</script>
2<div hidden id="S:0"></div>
2<script>$RC("B:0","S:0")</script>
2<script>(self.__next_f=self.__next_f||[]).push([0])</script>
2<script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[7580,[\"177\",\"static/chunks/app/layout-36b586036a21bc8e.js\"],\"ThemeProvider\"]\n3:I[9766,[],\"\"]\n4:I[8924,[],\"\"]\n5:I[8955,[\"177\",\"static/chunks/app/layout-36b586036a21bc8e.js\"],\"Analytics\"]\n6:I[7989,[],\"ClientSegmentRoot\"]\n7:I[1655,[\"237\",\"static/chunks/237-3747e27f15cc85e7.js\",\"588\",\"static/chunks/588-01a222faf12acc42.js\",\"202\",\"static/chunks/202-f106c4441f64a8d1.js\",\"220\",\"static/chunks/220-dbf9c36cbd02535c.js\",\"291\",\"static/chunks/app/%5Bproject%5D/layout-d3207db32338196d.js\"],\"default\"]\n8:I[1959,[],\"ClientPageRoot\"]\n9:I[2031,[\"237\",\"static/chunks/237-3747e27f15cc85e7.js\",\"911\",\"static/chunks/911-e191e1cf10e33582.js\",\"728\",\"static/chunks/app/%5Bproject%5D/page-5475da8ea705b707.js\"],\"default\"]\na:I[4431,[],\"OutletBoundary\"]\nc:I[5278,[],\"AsyncMetadataOutlet\"]\ne:I[4431,[],\"ViewportBoundary\"]\n10:I[4431,[],\"MetadataBoundary\"]\n11:\"$Sreact.suspense\"\n13:I[7150,[],\"\"]\n14:I[622,[],\"IconMark\"]\n:HL[\"/_next/static/media/017a2ead811bdc8f-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/1005bd875009f524.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/27834908180db20f-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/5611c55482296524-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/72309d8f79298cda.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/78fec81b34c4a365.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/7b89a4fd5e90ede0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/9a734c4640ba833a-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/b269f2652091576b.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/eda1bea3c0704595.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/f361b893d795d088.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/f866d85db2ebdd27.c"])</script>
2<script>self.__next_f.push([1,"ss\",\"style\"]\n:HL[\"/_next/static/css/c92fb400e616be00.css\",\"style\"]\n"])</script>
2<script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"jR1nCaz3FKGF15sFxxnB9\",\"p\":\"\",\"c\":[\"\",\"byline\"],\"i\":false,\"f\":[[[\"\",{\"children\":[[\"project\",\"byline\",\"d\"],{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/f866d85db2ebdd27.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/c92fb400e616be00.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"__variable_245d8d __variable_97c177 __variable_bc4999 __variable_e2853d __variable_f48c3b __variable_ac4600 __variable_158bdc __variable_054274 __variable_2c828a __variable_eb3077 __variable_df1539 dark\",\"style\":{\"colorScheme\":\"dark\"},\"children\":[[\"$\",\"body\",null,{\"className\":\"__className_bc4999\",\"children\":[[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"(function(){try{localStorage.setItem('theme','dark')}catch(e){}document.cookie='theme=dark; path=/; max-age=31536000; SameSite=Lax';})();\"}}],[\"$\",\"$L2\",null,{\"attribute\":\"class\",\"defaultTheme\":\"dark\",\"forcedTheme\":\"dark\",\"enableSystem\":false,\"disableTransitionOnChange\":true,\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}],[\"$\",\"$L5\",null,{}]]}]]}],{\"children\":[[\"project\",\"byline\",\"d\"],[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L6\",null,{\"Component\":\"$7\",\"slots\":{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]},\"params\":{\"project\":\"byline\"}}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L8\",null,{\"Component\":\"$9\",\"searchParams\":{},\"params\":\"$0:f:0:1:2:children:1:props:children:1:props:params\"}],null,[\"$\",\"$La\",null,{\"children\":[\"$Lb\",[\"$\",\"$Lc\",null,{\"promise\":\"$@d\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$Le\",null,{\"children\":\"$Lf\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]],[\"$\",\"$L10\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$11\",null,{\"fallback\":null,\"children\":\"$L12\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$13\",[]],\"s\":false,\"S\":false}\n"])</script>
2<script>self.__next_f.push([1,"f:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\nb:null\n"])</script>
2<script>self.__next_f.push([1,"d:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Ryan Bolick\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Designer and engineer focused on building delightful interfaces with technical depth\"}],[\"$\",\"meta\",\"2\",{\"property\":\"og:title\",\"content\":\"Ryan Bolick\"}],[\"$\",\"meta\",\"3\",{\"property\":\"og:description\",\"content\":\"Designer and engineer focused on building delightful interfaces with technical depth\"}],[\"$\",\"meta\",\"4\",{\"property\":\"og:url\",\"content\":\"https://ryanbolick.com\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:site_name\",\"content\":\"Ryan Bolick\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:locale\",\"content\":\"en_US\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:image\",\"content\":\"https://ryanbolick.com/og-image.png\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:alt\",\"content\":\"Ryan Bolick - Designer and engineer focused on building delightful interfaces with technical depth\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"12\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:title\",\"content\":\"Ryan Bolick\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:description\",\"content\":\"Designer and engineer focused on building delightful interfaces with technical depth\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:image\",\"content\":\"https://ryanbolick.com/og-image.png\"}],[\"$\",\"link\",\"16\",{\"rel\":\"shortcut icon\",\"href\":\"/favicon-16x16.png\"}],[\"$\",\"link\",\"17\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"link\",\"18\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-touch-icon.png\"}],[\"$\",\"$L14\",\"19\",{}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script>
2<script>self.__next_f.push([1,"12:\"$d:metadata\"\n"])</script>
2</body></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.