PageSourceSearch

https://www.calvinhoenes.com/projects

html calvinhoenes.com collected 2026-10-05 21:39:18 UTC 12,204 bytes, 83 lines download raw bytes

1<!doctype html>
2<html lang="en">
3	<head>
4		<meta charset="utf-8" />
5		<link rel="icon" href="./favicon.png" media="(prefers-color-scheme: light)" />
6		<link rel="icon" href="./favicon-drk.png" media="(prefers-color-scheme: dark)" />
7		<link rel="preconnect" href="https://fonts.googleapis.com">
8		<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
9		<link href="https://fonts.googleapis.com/css2?family=Work+Sans:wght@300;400;500;600;700&display=swap" rel="stylesheet">
10		<meta name="viewport" content="width=device-width, initial-scale=1" />
11		
12		<!-- Resource Hints -->
13		<link rel="preconnect" href="https://calvinhoenes.com">
14		<link rel="dns-prefetch" href="https://calvinhoenes.com">
15		
16		
17		<link href="./_app/immutable/assets/0.Dwu8PeWk.css" rel="stylesheet">
18		<link href="./_app/immutable/assets/luther.DcDSRs25.css" rel="stylesheet">
19		<link href="./_app/immutable/assets/BlogLayout.fGxyjhcC.css" rel="stylesheet">
20		<link href="./_app/immutable/assets/7.D_Yx47h0.css" rel="stylesheet">
21		<link rel="modulepreload" href="./_app/immutable/entry/start.CXV-BtMF.js">
22		<link rel="modulepreload" href="./_app/immutable/chunks/CN9tuEeq.js">
23		<link rel="modulepreload" href="./_app/immutable/chunks/D4jG1e4Y.js">
24		<link rel="modulepreload" href="./_app/immutable/chunks/C_CyA2ag.js">
25		<link rel="modulepreload" href="./_app/immutable/entry/app.DTLYu27K.js">
26		<link rel="modulepreload" href="./_app/immutable/chunks/C1FmrZbK.js">
27		<link rel="modulepreload" href="./_app/immutable/chunks/J4SdE-dN.js">
28		<link rel="modulepreload" href="./_app/immutable/chunks/CtSPjt7n.js">
29		<link rel="modulepreload" href="./_app/immutable/chunks/DUlsgx-8.js">
30		<link rel="modulepreload" href="./_app/immutable/chunks/DbjSjFGb.js">
31		<link rel="modulepreload" href="./_app/immutable/chunks/daMWMvBg.js">
32		<link rel="modulepreload" href="./_app/immutable/chunks/CYsy_rTO.js">
33		<link rel="modulepreload" href="./_app/immutable/nodes/0.CWIMv7d4.js">
34		<link rel="modulepreload" href="./_app/immutable/chunks/D9WZWQRF.js">
35		<link rel="modulepreload" href="./_app/immutable/chunks/Krj_LOB1.js">
36		<link rel="modulepreload" href="./_app/immutable/chunks/C6V6T2m9.js">
37		<link rel="modulepreload" href="./_app/immutable/chunks/C0AZktSN.js">
38		<link rel="modulepreload" href="./_app/immutable/chunks/AX8Thyq4.js">
39		<link rel="modulepreload" href="./_app/immutable/chunks/Kafw9Q3O.js">
40		<link rel="modulepreload" href="./_app/immutable/chunks/BhhT7Qvl.js">
41		<link rel="modulepreload" href="./_app/immutable/chunks/9Cc8mKF_.js">
42		<link rel="modulepreload" href="./_app/immutable/chunks/hIe1jH2E.js">
43		<link rel="modulepreload" href="./_app/immutable/chunks/tQhXrcmv.js">
44		<link rel="modulepreload" href="./_app/immutable/chunks/CV4AkNif.js">
45		<link rel="modulepreload" href="./_app/immutable/nodes/7.DI0y4p9T.js">
46		<link rel="modulepreload" href="./_app/immutable/chunks/ByMKVRte.js">
47		<link rel="modulepreload" href="./_app/immutable/chunks/DZb4_bR0.js">
48		<link rel="modulepreload" href="./_app/immutable/chunks/9To6vLfJ.js">
49		<link rel="modulepreload" href="./_app/immutable/chunks/AFZH1T4J.js">
50		<link rel="modulepreload" href="./_app/immutable/chunks/bmM_HVIK.js">
51		<link rel="modulepreload" href="./_app/immutable/chunks/NwCqbddE.js">
52		<link rel="modulepreload" href="./_app/immutable/chunks/DGVXfZ28.js">
53		<link rel="modulepreload" href="./_app/immutable/chunks/DXYMBNac.js"><!--[--><meta name="description" content="Exploring how technology and nature can coexist to create a more sustainable and vibrant future."> <meta property="og:type" content="website"> <meta property="og:site_name" content="Calvin Hoenes"> <meta property="og:image" content="https://sveltekit-prerender/main-seo.png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="630"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:image" content="https://sveltekit-prerender/main-seo.png"> <link rel="preload" href="/projects" as="fetch" crossorigin="anonymous"> <link rel="preload" href="/blog" as="fetch" crossorigin="anonymous"><!--]--><!--[--><meta name="description" content="Sustainable technology projects focused on harmonizing nature and innovation."> <meta property="og:title" content="Projects | Calvin Hoenes"> <meta property="og:description" content="Sustainable technology projects focused on harmonizing nature and innovation."> <meta property="og:type" content="website"> <meta property="og:url" content="https://sveltekit-prerender/projects"> <meta property="og:image" content="https://sveltekit-prerender/main-seo.png">
53 <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="630"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:title" content="Projects | Calvin Hoenes"> <meta name="twitter:description" content="Sustainable technology projects focused on harmonizing nature and innovation."> <meta name="twitter:image" content="https://sveltekit-prerender/main-seo.png"> 
53<script type="application/ld+json">
54        {JSON.stringify(structuredData)}
55    </script>
55 <!--[--><!--[!--><!--[--><link rel="preload" as="image" href="/projects/images/agentos-poster.webp" media="(max-width: 768px)"><!--]--><!--]--><!--]--><!--]--><title>Projects | Calvin Hoenes</title>
56	</head>
57	<body data-sveltekit-preload-data="hover">
58		<div style="display: contents"><!--[--><!--[--><!----><div class="fixed inset-0 -z-10"><div class="w-full h-full" style="background: radial-gradient(98.2% 236.53% at 88.62% 1.8%, #FFFAF5 0%, #FFFFFF 100%)"></div></div> <div class="flex flex-col min-h-screen"><nav class="fixed w-full top-0 z-50"><div class="w-full px-6 md:px-8 py-6 flex items-center justify-between relative z-[60]"><div class="flex items-center space-x-4"><a href="/" class="flex items-center space-x-4 "><img src="/logo.svg" alt="Logo" class="h-8 w-8"> <!--[--><span class="text-xl font-medium">Calvin Hoenes</span><!--]--></a></div> <!--[!--><!--]--> <!--[!--><!--]--> <div class="hidden md:flex items-center gap-8"><ul class="flex space-x-8"><!--[--><li><a href="/projects" data-sveltekit-preload="" class="transition-colors duration-200">Projects</a></li><li><a href="/blog" data-sveltekit-preload="" class="transition-colors duration-200">Articles</a></li><!--]--></ul><!----> <div class="flex items-center gap-4"><!--[--><a href="https://x.com/calvinhoenes" target="_blank" rel="noopener noreferrer" class="text-gray-600 hover:text-gray-900 transition-colors" aria-label="X (Twitter)"><img src="/social/x-black.webp" alt="X (Twitter)" class="w-5 h-5"></a><a href="https://linkedin.com/in/calvin-hoenes" target="_blank" rel="noopener noreferrer" class="text-gray-600 hover:text-gray-900 transition-colors" aria-label="LinkedIn"><img src="/social/linkedin.svg" alt="LinkedIn" class="w-5 h-5"></a>
58<!--]--></div></div> <div class="md:hidden flex items-center gap-4"><!--[!--><!--]--> <button class="p-2 " aria-label="Toggle menu"><div class="w-6 h-6 flex flex-col justify-center items-center"><span class="w-6 h-0.5 bg-current transition-all duration-300 ease-in-out "></span> <span class="w-6 h-0.5 bg-current transition-all duration-300 ease-in-out mt-2 "></span></div></button></div></div> <!--[!--><!--]--></nav><!----> <main class="flex-1"><!----><main class="min-h-screen py-32"><div class="max-w-6xl mx-auto px-6 md:px-6"><header class="mb-16 md:mb-24 md:text-center"><h1 class="text-4xl md:text-5xl lg:text-6xl font-normal text-slate-900 tracking-tight mb-6">Current Projects</h1></header> <!--[--><div class="md:hidden"><div class="flex gap-3 pb-8 overflow-x-hidden"><!--[--><div class="w-[88vw] flex-shrink-0 first:ml-[6vw] space-y-3"><div class="skeleton aspect-square rounded-xl"></div> <div class="space-y-2"><div class="skeleton h-8 w-3/4 rounded-lg"></div> <div class="flex gap-3"><div class="skeleton h-5 w-16 rounded-full"></div> <div class="skeleton h-5 w-20 rounded-full"></div></div></div></div><div class="w-[88vw] flex-shrink-0 first:ml-[6vw] space-y-3"><div class="skeleton aspect-square rounded-xl"></div> <div class="space-y-2"><div class="skeleton h-8 w-3/4 rounded-lg"></div> <div class="flex gap-3"><div class="skeleton h-5 w-16 rounded-full"></div> <div class="skeleton h-5 w-20 rounded-full"></div></div></div></div><div class="w-[88vw] flex-shrink-0 first:ml-[6vw] space-y-3"><div class="skeleton aspect-square rounded-xl"></div> <div class="space-y-2"><div class="skeleton h-8 w-3/4 rounded-lg"></div> <div class="flex gap-3"><div class="skeleton h-5 w-16 rounded-full"></div> <div class="skeleton h-5 w-20 rounded-full"></div></div></div></div><!--]--></div></div> <div class="hidden md:grid grid-cols-2 lg:grid-cols-3 gap-8 lg:gap-12"><!--[--><div class="space-y-6"><div class="skeleton aspect-[9/16] rounded-xl"></div> <div class="space-y-4"><div class="skeleton h-10 w-3/4 rounded-lg"></div> <div class="flex gap-3"><div class="skeleton h-5 w-16 rounded-full"></div> <div class="skeleton h-5 w-20 rounded-full"></div></div></div></div><div class="space-y-6"><div class="skeleton aspect-[9/16] rounded-xl"></div> <div class="space-y-4"><div class="skeleton h-10 w-3/4 rounded-lg"></div> <div class="flex gap-3"><div class="skeleton h-5 w-16 rounded-full"></div> <div class="skeleton h-5 w-20 rounded-full"></div></div></div></div><div class="space-y-6"><div class="skeleton aspect-[9/16] rounded-xl"></div> <div class="space-y-4"><div class="skeleton h-10 w-3/4 rounded-lg"></div> <div class="flex gap-3"><div class="skeleton h-5 w-16 rounded-full"></div> <div class="skeleton h-5 w-20 rounded-full"></div></div></div></div><div class="space-y-6"><div class="skeleton aspect-[9/16] rounded-xl"></div> <div class="space-y-4"><div class="skeleton h-10 w-3/4 rounded-lg"></div> <div class="flex gap-3"><div class="skeleton h-5 w-16 rounded-full"></div> <div class="skeleton h-5 w-20 rounded-full"></div></div></div></div><div class="space-y-6"><div class="skeleton aspect-[9/16] rounded-xl"></div> <div class="space-y-4"><div class="skeleton h-10 w-3/4 rounded-lg"></div> <div class="flex gap-3"><div class="skeleton h-5 w-16 rounded-full"></div> <div class="skeleton h-5 w-20 rounded-full"></div></div></div></div><div class="space-y-6"><div class="skeleton aspect-[9/16] rounded-xl"></div> <div class="space-y-4"><div class="skeleton h-10 w-3/4 rounded-lg"></div> <div class="flex gap-3"><div class="skeleton h-5 w-16 rounded-full"></div> <div class="skeleton h-5 w-20 rounded-full"></div></div></div></div><!--]--></div><!--]--></div></main><!----><!----></main> <div class="max-w-5xl w-full mx-6 sm:mx-auto"><form class="flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-8"><div class="flex-1"><h2 class="text-lg font-normal mb-1">Stay in the Loop</h2> <p class="text-slate-600 text-sm">Get updates on autonomous systems straight to your inbox.</p></div> <div class="flex w-full sm:w-auto gap-2"><input type="email" value="" placeholder="Enter your email" required class="flex-1 min-w-[200px] px-4 py-2 rounded-lg border border-slate-300 focus:outline-none focus:ring-2 focus:ring-slate-500"> <button type="submit" class="shrink-0 px-6 py-2 bg-slate-900 text-white rounded-lg hover:bg-slate-800 transition-colors disabled:opacity-50">Subscribe</button></div></form></div><!----> <footer class="w-full px-6 md:px-8 py-6 mt-32"><div><div class="flex justify-between items-center text-sm text-slate-600"><div>© 2025 Calvin Hoenes</div> <div class="flex gap-4"><a href="/privacy" class="hover:text-slate-900 transition-colors">Privacy</a> <a href="/imprint" class="hover:text-slate-900 transition-colors">Imprint</a></div></div></div></footer><!----></div><!----><!--]--> <!--[!--><!--]--><!--]-->
59			
60			
60<script>
61				{
62					__sveltekit_m4c848 = {
63						base: new URL(".", location).pathname.slice(0, -1)
64					};
65
66					const element = document.currentScript.parentElement;
67
68					Promise.all([
69						import("./_app/immutable/entry/start.CXV-BtMF.js"),
70						import("./_app/immutable/entry/app.DTLYu27K.js")
71					]).then(([kit, app]) => {
72						kit.start(app, element, {
73							node_ids: [0, 7],
74							data: [null,null],
75							form: null,
76							error: null
77						});
78					});
79				}
80			</script>
80
81		</div>
82	</body>
83</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.