PageSourceSearch

https://peterwitham.com/contact

html peterwitham.com collected 2026-10-02 05:30:50 UTC 25,940 bytes, 1 lines download raw bytes

1<!DOCTYPE html><html class=2xl:text-[20px] dir=ltr lang=en><head><meta charset=UTF-8><meta content="width=device-width,initial-scale=1" name=viewport><link href=/sitemap-index.xml rel=sitemap><link href=/_astro/favicon.D0WKl5iy.ico rel="shortcut icon"><link href=/_astro/favicon.DYwy4ynB.svg rel=icon type=image/svg+xml><link href=/_astro/favicon.DYwy4ynB.svg rel=mask-icon color=#8D46E7><link href=/_astro/apple-touch-icon.DSAS_UzY.png rel=apple-touch-icon sizes=180x180><style>:root{--aw-font-sans:'Inter Variable';--aw-font-serif:var(--aw-font-sans);--aw-font-heading:var(--aw-font-sans);--aw-color-primary:rgb(30 64 175);--aw-color-secondary:rgb(30 58 138);--aw-color-accent:rgb(109 40 217);--aw-color-text-heading:rgb(0 0 0);--aw-color-text-default:rgb(16 16 16);--aw-color-text-muted:rgb(16 16 16 / 66%);--aw-color-text-page:rgb(16 16 16);--aw-color-bg-page:rgb(255 255 255);--aw-color-bg-page-dark:rgb(3 6 32)}.dark{--aw-font-sans:'Inter Variable';--aw-font-serif:var(--aw-font-sans);--aw-font-heading:var(--aw-font-sans);--aw-color-primary:rgb(30 64 175);--aw-color-secondary:rgb(30 58 138);--aw-color-accent:rgb(109 40 217);--aw-color-text-heading:rgb(255 255 255);--aw-color-text-default:rgb(229 236 246);--aw-color-text-muted:rgb(229 236 246 / 66%);--aw-color-text-page:rgb(229 236 246);--aw-color-bg-page:var(--aw-color-bg-page-dark)}.dark,.dark body,.dark div,.dark p,.dark span{color:rgb(229 236 246)}.dark h1,.dark h2,.dark h3,.dark h4,.dark h5,.dark h6{color:rgb(255 255 255)}.dark a{color:rgb(147 197 253)}.dark a:hover{color:rgb(191 219 254)}.dark .dropdown-menu{background-color:rgb(15 23 42)!important;color:rgb(229 236 246)}.dark .dropdown-menu a{color:rgb(147 197 253)}.dark .dropdown-menu a:hover{background-color:rgb(30 41 59)!important;color:rgb(191 219 254)}.dark li.bg-gray-100{background-color:rgb(51 65 85)!important;border:1px solid rgb(71 85 105)}.dark li.bg-gray-100 a{color:rgb(203 213 225)!important}.dark li.bg-gray-100 a:hover{color:rgb(226 232 240)!important}.dark .prose b,.dark .prose strong,.dark article b,.dark article strong{color:rgb(255 255 255)}.dark .prose a,.dark article a{color:rgb(96 165 250)!important;text-decoration:underline;text-decoration-color:rgb(96 165 250 / 30%);text-underline-offset:2px}.dark .prose a:hover,.dark article a:hover{color:rgb(147 197 253)!important;text-decoration-color:rgb(147 197 253 / 50%)}.dark article h1 a,.dark article h2 a,.dark article h3 a,.dark article h4 a{text-decoration:none!important}.dark article h1 a:hover,.dark article h2 a:hover,.dark article h3 a:hover,.dark article h4 a:hover{text-decoration:none!important}</style>
1<script>!function(){const e="system";function t(e){"dark"===e?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark");const t=document.querySelectorAll("[data-aw-toggle-color-scheme] > input");t&&t.length&&t.forEach(t=>{t.checked="dark"!==e})}e&&e.endsWith(":only")||(localStorage.theme,0)?t(e.replace(":only","")):"dark"===localStorage.theme||!("theme"in localStorage)&&window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):t("light")}()</script>
1<title>Contact — PeterWitham.com</title><meta content="Developer, Podcaster, Streamer" name=description><meta content=index,follow name=robots><link href=https://peterwitham.com/contact rel=canonical><meta content=Contact property=og:title><meta content="Developer, Podcaster, Streamer" property=og:description><meta content=https://peterwitham.com/contact property=og:url><meta content=website property=og:type><meta content="" property=og:image><meta content=en property=og:locale><meta content=PeterWitham property=og:site_name><meta content=summary_large_image name=twitter:card><meta content=@compileswift name=twitter:site><meta content=@compileswift name=twitter:creator><meta content=orcPxI47GSa-cRvY11tUe6iGg2IO_RPvnA1q95iEM3M name=google-site-verification>
1<script data-app-id=DB947813-6EEF-4351-8DEE-5E1F6B487CA7 src=https://cdn.telemetrydeck.com/websdk/telemetrydeck.min.js></script>
1<link href=/_astro/Layout.Iq9joq4-.css rel=stylesheet></head><body class="antialiased bg-page text-default tracking-tight"><header class="w-full mx-auto border-b border-gray-50/0 ease-in-out flex-none sticky top-0 transition-[opacity] z-40" id=header><div class="absolute inset-0"></div><div class="w-full md:flex text-default max-w-7xl md:justify-between md:px-6 mx-auto px-3 py-3 relative"><div class="flex justify-between"><a class="items-center flex" href=/ ><span class="rtl:ml-0 dark:text-white font-bold md:text-xl ml-2 rtl:mr-2 self-center text-2xl text-gray-900 whitespace-nowrap"><img alt="PeterWitham.com Icon" class="float-left mr-3" decoding=async loading=lazy sizes="(min-width: 30px) 30px, 100vw" src=/images/pw-icon.png style=object-fit:cover;object-position:center;max-width:30px;width:100% width=30><span class=tracking-wider>PeterWitham.com</span></span></a><div class="items-center flex md:hidden"><button class="items-center flex cursor-pointer flex-col group h-12 justify-center rounded w-12" aria-label="Toggle Menu" data-aw-toggle-menu><span class=sr-only>Toggle Menu</span><span class="transition duration-200 ease bg-black dark:bg-white h-0.5 my-1 opacity-80 rounded-full transform w-6 group-[.expanded]:rotate-45 group-[.expanded]:translate-y-2.5" aria-hidden=true></span><span class="transition duration-200 ease bg-black dark:bg-white h-0.5 my-1 opacity-80 rounded-full transform w-6 group-[.expanded]:opacity-0" aria-hidden=true></span><span class="transition duration-200 ease bg-black dark:bg-white h-0.5 my-1 opacity-80 rounded-full transform w-6 group-[.expanded]:-rotate-45 group-[.expanded]:-translate-y-2.5" aria-hidden=true></span></button></div></div><nav aria-label="Main navigation" class="items-center md:w-auto w-full hidden md:flex md:mx-5 md:overflow-x-auto md:overflow-y-visible overflow-x-hidden overflow-y-auto text-default"><ul class="flex flex-col w-full font-medium md:flex-row md:self-center md:text-[0.9375rem] md:w-auto text-xl tracking-[0.01rem]"><li class=dropdown><button class="items-center flex dark:hover:text-white hover:text-link px-4 py-3">Blog <svg class="rtl:ml-0 h-3.5 hidden md:inline ml-0.5 rtl:mr-0.5 w-3.5" data-icon=tabler:chevron-down height=1em width=1em><symbol id=ai:tabler:chevron-down viewBox="0 0 24 24"><path d="m6 9l6 6l6-6" fill=none stroke=currentColor stroke-linecap=round stroke-linejoin=round stroke-width=2 /></symbol><use href=#ai:tabler:chevron-down></use></svg></button><ul class="font-medium dark:md:bg-dark drop-shadow-xl dropdown-menu md:absolute md:backdrop-blur-md md:bg-white/90 md:hidden md:min-w-[200px] md:pl-0 pl-4 rounded"><li><a class="dark:hover:bg-gray-700 block dark:hover:text-white first:rounded-t hover:text-link last:rounded-b md:hover:bg-gray-100 px-5 py-2 whitespace-no-wrap" href=/blog>Blog Posts</a></li><li><a class="dark:hover:bg-gray-700 block dark:hover:text-white first:rounded-t hover:text-link last:rounded-b md:hover:bg-gray-100 px-5 py-2 whitespace-no-wrap" href=/tag/swift>Swift</a></li><li><a class="dark:hover:bg-gray-700 block dark:hover:text-white first:rounded-t hover:text-link last:rounded-b md:hover:bg-gray-100 px-5 py-2 whitespace-no-wrap" href=/tag/game-development>Game Development</a></li></ul></li><li class=dropdown><button class="items-center flex dark:hover:text-white hover:text-link px-4 py-3">Apps <svg class="rtl:ml-0 h-3.5 hidden md:inline ml-0.5 rtl:mr-0.5 w-3.5" data-icon=tabler:chevron-down height=1em width=1em viewBox="0 0 24 24"><use href=#ai:tabler:chevron-down></use></svg></button><ul class="font-medium dark:md:bg-dark drop-shadow-xl dropdown-menu md:absolute md:backdrop-blur-md md:bg-white/90 md:hidden md:min-w-[200px] md:pl-0 pl-4 rounded"><li><a class="dark:hover:bg-gray-700 block dark:hover:text-white first:rounded-t hover:text-link last:rounded-b md:hover:bg-gray-100 px-5 py-2 whitespace-no-wrap" href=https://subradar.app rel="noopener noreferrer" target=_blank>SubRadar</a></li><li><a class="dark:hover:bg-gray-700 block dark:hover:text-white first:rounded-t hover:text-link last:rounded-b md:hover:bg-gray-100 px-5 py-2 whitespace-no-wrap" href=/eh>Endless Hurdles Game</a></li><li><a class="dark:hover:bg-gray-700 block dark:hover:text-white first:rounded-t hover:text-link last:rounded-b md:hover:bg-gray-100 px-5 py-2 whitespace-no-wrap" href=/mobile-project-fx-preset-manager>FX Preset Manager</a></li><li><a class="dark:hover:bg-gray-700 block dark:hover:text-white first:rounded-t hover:text-link last:rounded-b md:hover:bg-gray-100 px-5 py-2 whitespace-no-wrap" href=/mobile-project-job-search-tracker>Job Finder Tracker</a></li></ul></li><li class=dropdown><button class="items-center flex dark:hover:text-white hover:text-link px-4 py-3">Podcasts <svg class="rtl:ml-0 h-3.5 hidden md:inline ml-0.5 rtl:mr-0.5 w-3.5" data-icon=tabler:chevron-down height=1em width=1em viewBox="0 0 24 24"><use href=#ai:tabler:chevron-down></use></svg></button><ul class="font-medium dark:md:bg-dark drop-shadow-xl dropdown-menu md:absolute md:backdrop-blur-md md:bg-white/90 md:hidden md:min-w-[200px] md:pl-0 pl-4 rounded"><li><a class="dark:hover:bg-gray-700 block dark:hover:text-white first:rounded-t hover:text-link last:rounded-b md:hover:bg-gray-100 px-5 py-2 whitespace-no-wrap" href=/my-podcasting-hardware-and-software-studio>My Podcast and Streaming Set Up</a></li><li><a class="dark:hover:bg-gray-700 block dark:hover:text-white first:rounded-t hover:text-link last:rounded-b md:hover:bg-gray-100 px-5 py-2 whitespace-no-wrap" href=/podcastcs>App Developer</a></li><li><a class="dark:hover:bg-gray-700 block dark:hover:text-white first:rounded-t hover:text-link last:rounded-b md:hover:bg-gray-100 px-5 py-2 whitespace-no-wrap" href=/podcastpw>PW Podcast</a></li><li><a class="dark:hover:bg-gray-700 block dark:hover:text-white first:rounded-t hover:text-link last:rounded-b md:hover:bg-gray-100 px-5 py-2 whitespace-no-wrap" href=/creating-an-app-series>Creating an App Series</a></li><li><a class="dark:hover:bg-gray-700 block dark:hover:text-white first:rounded-t hover:text-link last:rounded-b md:hover:bg-gray-100 px-5 py-2 whitespace-no-wrap" href=https://uibuzz.transistor.fm>UIBuzz - App and game development</a></li></ul></li><li class=dropdown><button class="items-center flex dark:hover:text-white hover:text-link px-4 py-3">Other <svg class="rtl:ml-0 h-3.5 hidden md:inline ml-0.5 rtl:mr-0.5 w-3.5" data-icon=tabler:chevron-down height=1em width=1em viewBox="0 0 24 24"><use href=#ai:tabler:chevron-down></use></svg></button><ul class="font-medium dark:md:bg-dark drop-shadow-xl dropdown-menu md:absolute md:backdrop-blur-md md:bg-white/90 md:hidden md:min-w-[200px] md:pl-0 pl-4 rounded"><li><a class="dark:hover:bg-gray-700 block dark:hover:text-white first:rounded-t hover:text-link last:rounded-b md:hover:bg-gray-100 px-5 py-2 whitespace-no-wrap" href=/about>About</a></li><li><a class="dark:hover:bg-gray-700 block dark:hover:text-white first:rounded-t hover:text-link last:rounded-b md:hover:bg-gray-100 px-5 py-2 whitespace-no-wrap" href=https://twitch.tv/compiledev>Livestreaming</a></li></ul></li></ul></nav><div class="items-center flex md:w-auto w-full bottom-0 fixed hidden justify-end left-0 md:flex md:mb-0 md:p-0 md:self-center md:static p-3 rtl:left-auto rtl:right-0"><div class="items-center flex md:w-auto w-full justify-between"><div class=flex><button class="dark:hover:bg-gray-700 dark:focus:ring-gray-700 dark:text-gray-400 focus:outline-none focus:ring-4 focus:ring-gray-200 hover:bg-gray-100 inline-flex items-center p-2.5 rounded-lg text-muted text-sm" aria-label="Toggle between Dark and Light mode" data-aw-toggle-color-scheme type=button>
1<svg class="w-6 h-6 md:h-5 md:inline-block md:w-5" data-icon=tabler:sun height=1em width=1em><symbol id=ai:tabler:sun viewBox="0 0 24 24"><path d="M8 12a4 4 0 1 0 8 0a4 4 0 1 0-8 0m-5 0h1m8-9v1m8 8h1m-9 8v1M5.6 5.6l.7.7m12.1-.7l-.7.7m0 11.4l.7.7m-12.1-.7l-.7.7" fill=none stroke=currentColor stroke-linecap=round stroke-linejoin=round stroke-width=2 /></symbol><use href=#ai:tabler:sun></use></svg></button><a class="dark:hover:bg-gray-700 dark:focus:ring-gray-700 dark:text-gray-400 focus:outline-none focus:ring-4 focus:ring-gray-200 hover:bg-gray-100 inline-flex items-center p-2.5 rounded-lg text-muted text-sm" href=/rss.xml aria-label="RSS Feed"><svg class="h-5 w-5" data-icon=tabler:rss height=1em width=1em><symbol id=ai:tabler:rss viewBox="0 0 24 24"><path d="M4 19a1 1 0 1 0 2 0a1 1 0 1 0-2 0M4 4a16 16 0 0 1 16 16M4 11a9 9 0 0 1 9 9" fill=none stroke=currentColor stroke-linecap=round stroke-linejoin=round stroke-width=2 /></symbol><use href=#ai:tabler:rss></use></svg></a></div><span class="rtl:ml-0 ml-4 rtl:mr-4"><a class="btn-secondary font-semibold md:px-6 ml-2 px-5.5 py-2.5 shadow-none text-sm w-auto" href=/contact>Contact</a></span></div></div></div></header><main><section class="relative not-prose md:-mt-[76px]"><div class="absolute inset-0 pointer-events-none" aria-hidden=true></div><div class="relative max-w-7xl mx-auto px-4 sm:px-6"><div class="pointer-events-none md:pt-[76px] pt-0"></div><div class="md:pb-8 md:py-20 pb-8 py-12"><div class="mx-auto max-w-5xl text-center"><h1 class="font-bold dark:text-gray-200 font-heading leading-tighter mb-4 md:text-6xl text-5xl tracking-tighter">Contact Me</h1><div class="mx-auto max-w-3xl"><div class="flex flex-col flex-nowrap gap-4 m-auto max-w-xs sm:flex-row sm:justify-center sm:max-w-md"></div></div></div></div></div></section><section class=w-full><div class="flex justify-center max-w-9xl mx-auto"><div class="w-full lg:w-6/12 xl:w-5/12"><div class="flex flex-col w-full h-full items-start justify-start p-10"><form class='w-full' method='POST' name='contact'><input type='hidden' name='form-name' value='contact' /><div hidden><label>Don’t fill this out: <input name=bot-field></label></div><div class="w-full mt-10 relative space-y-8"><div class=relative><label class="font-medium text-gray-500">Name</label><input name=name class="block bg-gray-200 dark: focus:outline-none focus:ring-4 focus:ring-blue-600 focus:ring-opacity-50 mt-2 placeholder-gray-400 px-4 py-4 rounded-lg text-black text-xl w-full" placeholder="Enter Your Name" type=text></div><div class=relative><label class="font-medium text-gray-500">Email</label><input name=email class="block bg-gray-200 dark: focus:outline-none focus:ring-4 focus:ring-blue-600 focus:ring-opacity-50 mt-2 placeholder-gray-400 px-4 py-4 rounded-lg text-black text-xl w-full" placeholder="Enter Your Email Address" type=email></div><div class=relative><label class="font-medium text-gray-500">Message</label><textarea class="block bg-gray-200 dark: focus:outline-none focus:ring-4 focus:ring-blue-600 focus:ring-opacity-50 mt-2 placeholder-gray-400 px-4 py-4 rounded-lg text-black text-xl w-full" name=message placeholder="Enter message" rows=6></textarea></div><div class=relative><button class="w-full py-4 rounded-lg bg-blue-600 duration-200 ease font-medium hover:bg-blue-700 inline-block px-5 text-center text-lg text-white transition" type=submit>Send</button></div></div></form></div></div></div></section></main><footer class="relative not-prose border-gray-200 border-t dark:border-slate-800"><div class="absolute inset-0 pointer-events-none dark:bg-dark" aria-hidden=true></div><div class="relative max-w-7xl mx-auto px-4 sm:px-6 dark:text-slate-300"><div class="gap-4 gap-y-8 grid grid-cols-12 md:py-12 py-8 sm:gap-8"><div class="col-span-12 lg:col-span-4"><div class=mb-2><a class="font-bold inline-block text-xl" href=/ >PeterWitham.com</a></div><div class="text-sm text-muted"><a class="transition dark:text-gray-400 duration-150 ease-in-out hover:text-gray-700 hover:underline text-muted mr-2 rtl:ml-2 rtl:mr-0" href=/privacy>Privacy Policy</a></div></div><div class="col-span-6 lg:col-span-2 md:col-span-3"><div class="font-medium dark:text-gray-300 mb-2">Apps</div><ul class=text-sm><li class=mb-2><a class="transition dark:text-gray-400 duration-150 ease-in-out hover:text-gray-700 hover:underline text-muted" href=/eh>Endless Hurdles (Game)</a></li><li class=mb-2><a class="transition dark:text-gray-400 duration-150 ease-in-out hover:text-gray-700 hover:underline text-muted" href=https://projecthack.net>Project Hack (Game)</a></li><li class=mb-2><a class="transition dark:text-gray-400 duration-150 ease-in-out hover:text-gray-700 hover:underline text-muted" href=/mobile-project-fx-preset-manager>FX Preset Manager (iOS)</a></li><li class=mb-2><a class="transition dark:text-gray-400 duration-150 ease-in-out hover:text-gray-700 hover:underline text-muted" href=/mobile-project-job-search-tracker>Job Finder Tracker (iOS)</a></li></ul></div><div class="col-span-6 lg:col-span-2 md:col-span-3"><div class="font-medium dark:text-gray-300 mb-2">Podcasts</div><ul class=text-sm><li class=mb-2><a class="transition dark:text-gray-400 duration-150 ease-in-out hover:text-gray-700 hover:underline text-muted" href=/podcastcs>App Developer</a></li><li class=mb-2><a class="transition dark:text-gray-400 duration-150 ease-in-out hover:text-gray-700 hover:underline text-muted" href=/csform>Compile Swift Guest</a></li><li class=mb-2><a class="transition dark:text-gray-400 duration-150 ease-in-out hover:text-gray-700 hover:underline text-muted" href=https://uibuzz.transistor.fm>UIBuzz</a></li></ul></div></div><div class="md:items-center md:flex md:justify-between md:py-8 py-6"><ul class="flex md:mb-0 -ml-2 mb-4 md:ml-4 md:order-1 rtl:-mr-2 rtl:md:ml-0 rtl:md:mr-4 rtl:ml-0"><li><a class="dark:hover:bg-gray-700 dark:focus:ring-gray-700 dark:text-gray-400 focus:outline-none focus:ring-4 focus:ring-gray-200 hover:bg-gray-100 inline-flex items-center p-2.5 rounded-lg text-muted text-sm" href=https://www.linkedin.com/in/peterwitham aria-label=LinkedIn><svg class="h-5 w-5" data-icon=tabler:brand-linkedin height=1em width=1em><symbol id=ai:tabler:brand-linkedin viewBox="0 0 24 24"><g fill=none stroke=currentColor stroke-linecap=round stroke-linejoin=round stroke-width=2><path d="M8 11v5m0-8v.01M12 16v-5m4 5v-3a2 2 0 1 0-4 0"/><path d="M3 7a4 4 0 0 1 4-4h10a4 4 0 0 1 4 4v10a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4z"/></g></symbol><use href=#ai:tabler:brand-linkedin></use></svg></a></li><li><a class="dark:hover:bg-gray-700 dark:focus:ring-gray-700 dark:text-gray-400 focus:outline-none focus:ring-4 focus:ring-gray-200 hover:bg-gray-100 inline-flex items-center p-2.5 rounded-lg text-muted text-sm" href=https://www.youtube.com/c/PeterWitham aria-label=YouTube><svg class="h-5 w-5" data-icon=tabler:brand-youtube height=1em width=1em><symbol id=ai:tabler:brand-youtube viewBox="0 0 24 24"><g fill=none stroke=currentColor stroke-linecap=round stroke-linejoin=round stroke-width=2><path d="M2 8a4 4 0 0 1 4-4h12a4 4 0 0 1 4 4v8a4 4 0 0 1-4 4H6a4 4 0 0 1-4-4z"/><path d="m10 9l5 3l-5 3z"/></g></symbol><use href=#ai:tabler:brand-youtube></use></svg></a></li><li><a class="dark:hover:bg-gray-700 dark:focus:ring-gray-700 dark:text-gray-400 focus:outline-none focus:ring-4 focus:ring-gray-200 hover:bg-gray-100 inline-flex items-center p-2.5 rounded-lg text-muted text-sm" href=https://www.twitch.tv/compiledev aria-label=Twitch>
1<svg class="h-5 w-5" data-icon=tabler:brand-twitch height=1em width=1em><symbol id=ai:tabler:brand-twitch viewBox="0 0 24 24"><path d="M4 5v11a1 1 0 0 0 1 1h2v4l4-4h5.584c.266 0 .52-.105.707-.293l2.415-2.414c.187-.188.293-.442.293-.708V5a1 1 0 0 0-1-1h-14a1 1 0 0 0-1 1zm12 3v4m-4-4v4" fill=none stroke=currentColor stroke-linecap=round stroke-linejoin=round stroke-width=2 /></symbol><use href=#ai:tabler:brand-twitch></use></svg></a></li><li><a class="dark:hover:bg-gray-700 dark:focus:ring-gray-700 dark:text-gray-400 focus:outline-none focus:ring-4 focus:ring-gray-200 hover:bg-gray-100 inline-flex items-center p-2.5 rounded-lg text-muted text-sm" href=https://instagram.com/compileswift aria-label=Instagram><svg class="h-5 w-5" data-icon=tabler:brand-instagram height=1em width=1em><symbol id=ai:tabler:brand-instagram viewBox="0 0 24 24"><g fill=none stroke=currentColor stroke-linecap=round stroke-linejoin=round stroke-width=2><path d="M4 8a4 4 0 0 1 4-4h8a4 4 0 0 1 4 4v8a4 4 0 0 1-4 4H8a4 4 0 0 1-4-4z"/><path d="M9 12a3 3 0 1 0 6 0a3 3 0 0 0-6 0m7.5-4.5v.01"/></g></symbol><use href=#ai:tabler:brand-instagram></use></svg></a></li><li><a class="dark:hover:bg-gray-700 dark:focus:ring-gray-700 dark:text-gray-400 focus:outline-none focus:ring-4 focus:ring-gray-200 hover:bg-gray-100 inline-flex items-center p-2.5 rounded-lg text-muted text-sm" href=https://facebook.com/compilesw aria-label=Facebook><svg class="h-5 w-5" data-icon=tabler:brand-facebook height=1em width=1em><symbol id=ai:tabler:brand-facebook viewBox="0 0 24 24"><path d="M7 10v4h3v7h4v-7h3l1-4h-4V8a1 1 0 0 1 1-1h3V3h-3a5 5 0 0 0-5 5v2z" fill=none stroke=currentColor stroke-linecap=round stroke-linejoin=round stroke-width=2 /></symbol><use href=#ai:tabler:brand-facebook></use></svg></a></li><li><a class="dark:hover:bg-gray-700 dark:focus:ring-gray-700 dark:text-gray-400 focus:outline-none focus:ring-4 focus:ring-gray-200 hover:bg-gray-100 inline-flex items-center p-2.5 rounded-lg text-muted text-sm" href=/rss.xml aria-label=RSS><svg class="h-5 w-5" data-icon=tabler:rss height=1em width=1em viewBox="0 0 24 24"><use href=#ai:tabler:rss></use></svg></a></li><li><a class="dark:hover:bg-gray-700 dark:focus:ring-gray-700 dark:text-gray-400 focus:outline-none focus:ring-4 focus:ring-gray-200 hover:bg-gray-100 inline-flex items-center p-2.5 rounded-lg text-muted text-sm" href=https://github.com/grfxguru aria-label=Github><svg class="h-5 w-5" data-icon=tabler:brand-github height=1em width=1em><symbol id=ai:tabler:brand-github viewBox="0 0 24 24"><path d="M9 19c-4.3 1.4-4.3-2.5-6-3m12 5v-3.5c0-1 .1-1.4-.5-2c2.8-.3 5.5-1.4 5.5-6a4.6 4.6 0 0 0-1.3-3.2a4.2 4.2 0 0 0-.1-3.2s-1.1-.3-3.5 1.3a12.3 12.3 0 0 0-6.2 0C6.5 2.8 5.4 3.1 5.4 3.1a4.2 4.2 0 0 0-.1 3.2A4.6 4.6 0 0 0 4 9.5c0 4.6 2.7 5.7 5.5 6c-.6.6-.6 1.2-.5 2V21" fill=none stroke=currentColor stroke-linecap=round stroke-linejoin=round stroke-width=2 /></symbol><use href=#ai:tabler:brand-github></use></svg></a></li><li><a class="dark:hover:bg-gray-700 dark:focus:ring-gray-700 dark:text-gray-400 focus:outline-none focus:ring-4 focus:ring-gray-200 hover:bg-gray-100 inline-flex items-center p-2.5 rounded-lg text-muted text-sm" href=https://x.com/compileswift aria-label=X><svg class="h-5 w-5" data-icon=tabler:brand-x height=1em width=1em><symbol id=ai:tabler:brand-x viewBox="0 0 24 24"><path d="m4 4l11.733 16H20L8.267 4zm0 16l6.768-6.768m2.46-2.46L20 4" fill=none stroke=currentColor stroke-linecap=round stroke-linejoin=round stroke-width=2 /></symbol><use href=#ai:tabler:brand-x></use></svg></a></li></ul></div></div></footer>
1<script>!function(){const e="system";function t(e){"dark"===e?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark")}function o(e,t,o){const a="string"==typeof e?document.querySelectorAll(e):e;a&&a.length&&a.forEach(e=>{e.addEventListener(t,t=>o(t,e),!1)})}e&&e.endsWith(":only")||(localStorage.theme,0)?t(e.replace(":only","")):"dark"===localStorage.theme||!("theme"in localStorage)&&window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):t("light"),window.onload=function(){let t=window.scrollY,a=!0;function d(){const e=document.getElementById("header");t>60&&!e.classList.contains("scroll")?document.getElementById("header").classList.add("scroll"):t<=60&&e.classList.contains("scroll")&&document.getElementById("header").classList.remove("scroll"),a=!1}o("#header nav","click",function(){document.querySelector("[data-aw-toggle-menu]")?.classList.remove("expanded"),document.body.classList.remove("overflow-hidden"),document.getElementById("header")?.classList.remove("h-screen"),document.getElementById("header")?.classList.remove("expanded"),document.getElementById("header")?.classList.remove("bg-page"),document.querySelector("#header nav")?.classList.add("hidden"),document.querySelector("#header > div > div:last-child")?.classList.add("hidden")}),o("[data-aw-toggle-menu]","click",function(e,t){t.classList.toggle("expanded"),document.body.classList.toggle("overflow-hidden"),document.getElementById("header")?.classList.toggle("h-screen"),document.getElementById("header")?.classList.toggle("expanded"),document.getElementById("header")?.classList.toggle("bg-page"),document.querySelector("#header nav")?.classList.toggle("hidden"),document.querySelector("#header > div > div:last-child")?.classList.toggle("hidden")}),o("[data-aw-toggle-color-scheme]","click",function(){e.endsWith(":only")||(document.documentElement.classList.toggle("dark"),localStorage.theme=document.documentElement.classList.contains("dark")?"dark":"light")}),o("[data-aw-social-share]","click",function(e,t){const o=t.getAttribute("data-aw-social-share"),a=encodeURIComponent(t.getAttribute("data-aw-url")),d=encodeURIComponent(t.getAttribute("data-aw-text"));let n;switch(o){case"facebook":n=`https://www.facebook.com/sharer.php?u=${a}`;break;case"twitter":n=`https://twitter.com/intent/tweet?url=${a}&text=${d}`;break;case"linkedin":n=`https://www.linkedin.com/shareArticle?mini=true&url=${a}&title=${d}`;break;case"whatsapp":n=`https://wa.me/?text=${d}%20${a}`;break;case"mail":n=`mailto:?subject=%22${d}%22&body=${d}%20${a}`;break;default:return}const c=document.createElement("a");c.target="_blank",c.href=n,c.click()}),d(),o([document],"scroll",function(){t=window.scrollY,a||(window.requestAnimationFrame(()=>{d()}),a=!0)})},window.onpageshow=function(){document.documentElement.classList.add("motion-safe:scroll-smooth");const e=document.querySelector("[data-aw-toggle-menu]");e&&e.classList.remove("expanded"),document.body.classList.remove("overflow-hidden"),document.getElementById("header")?.classList.remove("h-screen"),document.getElementById("header")?.classList.remove("expanded"),document.querySelector("#header nav")?.classList.add("hidden")}}()</script>
1</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.