<!DOCTYPE html><html lang="en" data-astro-cid-sckkx6r4> <head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" type="image/svg+xml" href="/favicon.ico"><meta name="generator" content="Astro v5.17.1"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link rel="canonical" href="https://kwilson.io/"><title>Kevin Wilson</title><meta name="title" content="Kevin Wilson"><meta name="description" content="Software developer, TypeScript enthusiast, whisky lover, coffee snob, sometime musician, and occasional cook."><meta property="og:site_name" content="Kevin Wilson"><meta property="og:type" content="website"><meta property="og:url" content="https://kwilson.io/"><meta property="og:title" content="Kevin Wilson"><meta property="og:description" content="Software developer, TypeScript enthusiast, whisky lover, coffee snob, sometime musician, and occasional cook."><meta property="og:image" content="https://kwilson.io/blog-placeholder-1.jpg"><meta property="twitter:card" content="summary_large_image"><meta property="twitter:url" content="https://kwilson.io/"><meta property="twitter:title" content="Kevin Wilson"><meta property="twitter:description" content="Software developer, TypeScript enthusiast, whisky lover, coffee snob, sometime musician, and occasional cook."><meta property="twitter:image" content="https://kwilson.io/blog-placeholder-1.jpg"><link rel="alternate" type="application/rss+xml" title="Kevin Wilson" href="/rss.xml"><link rel="stylesheet" href="/_astro/_slug_.5xamwFo_.css">
<style>.intro[data-astro-cid-j7pv25f6]{padding:1rem 0 0}.kicker[data-astro-cid-j7pv25f6]{font-family:var(--font-sans);font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--color-accent);margin-bottom:.75rem}.headline[data-astro-cid-j7pv25f6]{font-family:var(--font-serif);font-weight:900;font-size:clamp(3rem,8vw,4.5rem);line-height:1.05;letter-spacing:-.03em;margin-bottom:1.25rem;color:var(--color-ink)}.standfirst[data-astro-cid-j7pv25f6]{font-family:var(--font-serif);font-size:1.3rem;line-height:1.6;color:var(--color-ink);font-weight:400}.intro-text[data-astro-cid-j7pv25f6]{font-family:var(--font-serif);font-size:1.15rem;line-height:1.6;color:var(--color-ink)}.divider[data-astro-cid-j7pv25f6]{border:none;height:1px;background:var(--color-border);margin:3rem 0}.section-header[data-astro-cid-j7pv25f6]{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:.5rem}.section-header[data-astro-cid-j7pv25f6] h2[data-astro-cid-j7pv25f6]{font-family:var(--font-serif);font-weight:700}.view-all[data-astro-cid-j7pv25f6]{font-family:var(--font-sans);font-size:.85rem;font-weight:600;text-decoration:none;color:var(--color-accent);letter-spacing:.01em;white-space:nowrap}.view-all[data-astro-cid-j7pv25f6]:hover{text-decoration:underline}@media(max-width:500px){.section-header[data-astro-cid-j7pv25f6]{flex-direction:column;gap:.25rem}}
.tag-cloud[data-astro-cid-6pyqhcr2]{display:flex;flex-wrap:wrap;list-style:none;padding:0;margin:0;gap:4px;justify-content:flex-end}.tag-cloud[data-astro-cid-6pyqhcr2][data-center]{justify-content:center}.tag-cloud[data-astro-cid-6pyqhcr2] li[data-astro-cid-6pyqhcr2]{display:contents}.tag-cloud[data-astro-cid-6pyqhcr2] a[data-astro-cid-6pyqhcr2]{background:var(--color-cream-dark);padding:.35rem .85rem;border-radius:3px;font-family:var(--font-sans);font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;text-decoration:none;color:var(--color-ink-muted);line-height:1;transition:background .2s,color .2s}.tag-cloud[data-astro-cid-6pyqhcr2] a[data-astro-cid-6pyqhcr2]:hover{background:var(--color-accent);color:#fff}
.posts[data-astro-cid-nni2rj4u]{display:flex;flex-direction:column}.post[data-astro-cid-nni2rj4u]{border-bottom:1px solid var(--color-border);padding:2rem 0}.post[data-astro-cid-nni2rj4u]:last-child{border-bottom:none}.post-date[data-astro-cid-nni2rj4u]{font-family:var(--font-sans);font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--color-ink-muted);margin-bottom:.5rem}.post-title[data-astro-cid-nni2rj4u]{font-family:var(--font-serif);font-size:1.75rem;font-weight:700;line-height:1.25;margin-bottom:.75rem;letter-spacing:-.01em}.post-title[data-astro-cid-nni2rj4u] a[data-astro-cid-nni2rj4u]{color:var(--color-ink);text-decoration:none;transition:color .2s}.post-title[data-astro-cid-nni2rj4u] a[data-astro-cid-nni2rj4u]:hover{color:var(--color-accent)}.post-excerpt[data-astro-cid-nni2rj4u]{color:var(--color-ink-muted);line-height:1.65;margin-bottom:.75rem}.post-footer[data-astro-cid-nni2rj4u]{display:flex;justify-content:flex-end}.tag-list[data-astro-cid-nni2rj4u]{display:flex}
</style></head> <body data-astro-cid-sckkx6r4> <header data-astro-cid-3ef6ksr2> <nav aria-label="Main Menu" role="navigation" id="main-nav" data-astro-cid-3ef6ksr2> <a href="/" class="masthead" data-astro-cid-3ef6ksr2> <span class="masthead-name" data-astro-cid-3ef6ksr2>Kevin Wilson</span> </a> <button aria-expanded="false" class="hamburger" type="button" data-astro-cid-3weo6hls> <span aria-hidden="true" class="hamburger-container" tabindex="-1" data-astro-cid-3weo6hls> <span class="line" data-astro-cid-3weo6hls></span> <span class="cross" data-astro-cid-3weo6hls> <span class="line" data-astro-cid-3weo6hls></span> <span class="line" data-astro-cid-3weo6hls></span> </span> <span class="line" data-astro-cid-3weo6hls></span> </span> <span class="sr-only" data-astro-cid-3weo6hls>Menu</span> </button>  <div class="internal-links" data-astro-cid-3ef6ksr2> <a href="/" class="active" data-astro-cid-3ef6ksr2="true" data-astro-cid-eimmu3lg> Home </a>  <a href="/blog" data-astro-cid-3ef6ksr2="true" data-astro-cid-eimmu3lg> Blog </a>  <a href="/about" data-astro-cid-3ef6ksr2="true" data-astro-cid-eimmu3lg> About </a>  <a href="/notes" data-astro-cid-3ef6ksr2="true" data-astro-cid-eimmu3lg> Notes </a>  </div> <div class="social-links" data-astro-cid-3ef6ksr2> <a rel="me" href="https://mastodon.social/@kwilson81" target="_blank" class="social-icon" data-astro-cid-3ef6ksr2> <span class="sr-only" data-astro-cid-3ef6ksr2>Follow Me on Mastodon</span> <svg viewBox="0 0 16 16" aria-hidden="true" width="22" height="22" data-astro-cid-3ef6ksr2> <path fill="currentColor" d="M11.19 12.195c2.016-.24 3.77-1.475 3.99-2.603.348-1.778.32-4.339.32-4.339 0-3.47-2.286-4.488-2.286-4.488C12.062.238 10.083.017 8.027 0h-.05C5.92.017 3.942.238 2.79.765c0 0-2.285 1.017-2.285 4.488l-.002.662c-.004.64-.007 1.35.011 2.091.083 3.394.626 6.74 3.78 7.57 1.454.383 2.703.463 3.709.408 1.823-.1 2.847-.647 2.847-.647l-.06-1.317s-1.303.41-2.767.36c-1.45-.05-2.98-.156-3.215-1.928a3.614 3.614 0 0 1-.033-.496s1.424.346 3.228.428c1.103.05 2.137-.064 3.188-.189zm1.613-2.47H11.13v-4.08c0-.859-.364-1.295-1.091-1.295-.804 0-1.207.517-1.207 1.541v2.233H7.168V5.89c0-1.024-.403-1.541-1.207-1.541-.727 0-1.091.436-1.091 1.296v4.079H3.197V5.522c0-.859.22-1.541.66-2.046.456-.505 1.052-.764 1.793-.764.856 0 1.504.328 1.933.983L8 4.39l.417-.695c.429-.655 1.077-.983 1.934-.983.74 0 1.336.259 1.791.764.442.505.661 1.187.661 2.046v4.203z" data-astro-cid-3ef6ksr2></path> </svg> </a> <a href="https://github.com/kwilson" target="_blank" class="social-icon" data-astro-cid-3ef6ksr2> <span class="sr-only" data-astro-cid-3ef6ksr2>See what I'm up to on GitHub</span> <svg viewBox="0 0 16 16" aria-hidden="true" width="22" height="22" data-astro-cid-3ef6ksr2> <path fill="currentColor" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z" data-astro-cid-3ef6ksr2></path> </svg> </a> <button class="theme-toggle" id="themeToggle" type="button" aria-label="Toggle Theme" data-astro-cid-oemx5le4> <svg width="22px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" data-astro-cid-oemx5le4> <path class="sun" fill-rule="evenodd" d="M12 17.5a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11zm0 1.5a7 7 0 1 0 0-14 7 7 0 0 0 0 14zm12-7a.8.8 0 0 1-.8.8h-2.4a.8.8 0 0 1 0-1.6h2.4a.8.8 0 0 1 .8.8zM4 12a.8.8 0 0 1-.8.8H.8a.8.8 0 0 1 0-1.6h2.5a.8.8 0 0 1 .8.8zm16.5-8.5a.8.8 0 0 1 0 1l-1.8 1.8a.8.8 0 0 1-1-1l1.7-1.8a.8.8 0 0 1 1 0zM6.3 17.7a.8.8 0 0 1 0 1l-1.7 1.8a.8.8 0 1 1-1-1l1.7-1.8a.8.8 0 0 1 1 0zM12 0a.8.8 0 0 1 .8.8v2.5a.8.8 0 0 1-1.6 0V.8A.8.8 0 0 1 12 0zm0 20a.8.8 0 0 1 .8.8v2.4a.8.8 0 0 1-1.6 0v-2.4a.8.8 0 0 1 .8-.8zM3.5 3.5a.8.8 0 0 1 1 0l1.8 1.8a.8.8 0 1 1-1 1L3.5 4.6a.8.8 0 0 1 0-1zm14.2 14.2a.8.8 0 0 1 1 0l1.8 1.7a.8.8 0 0 1-1 1l-1.8-1.7a.8.8 0 0 1 0-1z" data-astro-cid-oemx5le4></path> <path class="moon" fill-rule="evenodd" d="M16.5 6A10.5 10.5 0 0 1 4.7 16.4 8.5 8.5 0 1 0 16.4 4.7l.1 1.3zm-1.7-2a9 9 0 0 1 .2 2 9 9 0 0 1-11 8.8 9.4 9.4 0 0 1-.8-.3c-.4 0-.8.3-.7.7a10 10 0 0 0 .3.8 10 10 0 0 0 9.2 6 10 10 0 0 0 4-19.2 9.7 9.7 0 0 0-.9-.3c-.3-.1-.7.3-.6.7a9 9 0 0 1 .3.8z" data-astro-cid-oemx5le4></path> </svg> </button>  <script>
  const key = 'theme';
  const light = 'light';
  const dark = 'dark';

  const theme = (() => {
    if (typeof localStorage !== 'undefined' && localStorage.getItem(key)) {
      return localStorage.getItem(key);
    }
    if (typeof sessionStorage !== 'undefined' && sessionStorage.getItem(key)) {
      return sessionStorage.getItem(key);
    }
    if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
      window.sessionStorage.setItem(key, dark);
      return dark;
    }
    window.sessionStorage.setItem(key, light);
    return light;
  })();

  if (theme === dark) {
    document.documentElement.classList.add(dark);
  } else {
    document.documentElement.classList.remove(dark);
  }

  const handleToggleClick = () => {
    const element = document.documentElement;
    element.classList.toggle(dark);
    const isDark = element.classList.contains(dark);
    localStorage.setItem(key, isDark ? dark : light);
  };

  document.getElementById('themeToggle')?.addEventListener('click', handleToggleClick);
</script> </div> </nav> </header>  <script type="module">const e=document.querySelector(".hamburger");e?.addEventListener("click",()=>{document.querySelector(".internal-links")?.classList.toggle("expanded"),e?.classList.toggle("open"),e?.setAttribute("aria-expanded",JSON.stringify(e?.classList.contains("open")))});const t=document.getElementById("main-nav");t&&t.style.setProperty("--nav-height",`${t.offsetHeight}px`);</script> <main data-astro-cid-sckkx6r4>  <section class="intro" data-astro-cid-j7pv25f6> <p class="kicker" data-astro-cid-j7pv25f6>Software Developer &middot; Glasgow, Scotland</p> <h1 class="headline" data-astro-cid-j7pv25f6>Hello!</h1> <p class="standfirst" data-astro-cid-j7pv25f6>
I'm a software developer, TypeScript enthusiast, whisky lover, coffee snob,
      sometime musician, and occasional cook.
</p> <p class="intro-text" data-astro-cid-j7pv25f6>
This site is a collection of blog posts (some very old), links to me
      elsewhere on the web and, occasionally, recipes.
</p> </section> <hr class="divider" data-astro-cid-j7pv25f6> <section class="recent" data-astro-cid-j7pv25f6> <div class="section-header" data-astro-cid-j7pv25f6> <h2 data-astro-cid-j7pv25f6>Recent Writing</h2> <a href="/blog" class="view-all" data-astro-cid-j7pv25f6>View all posts &rarr;</a> </div> <div class="posts" data-astro-cid-nni2rj4u> <article class="post" data-astro-cid-nni2rj4u> <div class="post-date" data-astro-cid-nni2rj4u> <time datetime="2026-02-21T00:00:00.000Z"> 21 Feb 2026 </time> </div> <h2 class="post-title" data-astro-cid-nni2rj4u> <a href="/blog/abortcontroller-the-swiss-army-knife-of-javascript/" data-astro-cid-nni2rj4u>AbortController: the Swiss army knife of JavaScript</a> </h2> <div class="post-excerpt" data-astro-cid-nni2rj4u>Most people know AbortController as the thing you use to cancel fetch requests. That's fair enough — it was literally designed for that. But AbortController has quietly become one of the most versatile tools in the JavaScript standard library. Its signal mechanism plugs into event listeners, streams, Node.js APIs, and…</div> <div class="post-footer" data-astro-cid-nni2rj4u> <div class="tag-list" data-astro-cid-nni2rj4u> <ul class="tag-cloud" data-astro-cid-6pyqhcr2><li data-astro-cid-6pyqhcr2><a href="/blog/tags/javascript" data-astro-cid-6pyqhcr2>JavaScript</a></li><li data-astro-cid-6pyqhcr2><a href="/blog/tags/react" data-astro-cid-6pyqhcr2>React</a></li><li data-astro-cid-6pyqhcr2><a href="/blog/tags/web-apis" data-astro-cid-6pyqhcr2>Web APIs</a></li></ul> </div> </div> </article><article class="post" data-astro-cid-nni2rj4u> <div class="post-date" data-astro-cid-nni2rj4u> <time datetime="2024-04-29T18:40:04.000Z"> 29 Apr 2024 </time> </div> <h2 class="post-title" data-astro-cid-nni2rj4u> <a href="/blog/publish-your-mastodon-posts-to-astro/" data-astro-cid-nni2rj4u>Publish Your Mastodon Posts to Astro</a> </h2> <div class="post-excerpt" data-astro-cid-nni2rj4u>I'm a big fan of hosting your own content. Partly because I like keeping control over what I've posted, partly because platforms like <s>MySpace</s>  some older video sharing sites will just lose all of your content that you hadn't backed up anywhere else because you were young(er) and stupid(er).
Since the implosion…</div> <div class="post-footer" data-astro-cid-nni2rj4u> <div class="tag-list" data-astro-cid-nni2rj4u> <ul class="tag-cloud" data-astro-cid-6pyqhcr2><li data-astro-cid-6pyqhcr2><a href="/blog/tags/astro" data-astro-cid-6pyqhcr2>Astro</a></li><li data-astro-cid-6pyqhcr2><a href="/blog/tags/cloudflare" data-astro-cid-6pyqhcr2>Cloudflare</a></li><li data-astro-cid-6pyqhcr2><a href="/blog/tags/code" data-astro-cid-6pyqhcr2>Code</a></li><li data-astro-cid-6pyqhcr2><a href="/blog/tags/ifttt" data-astro-cid-6pyqhcr2>IFTTT</a></li><li data-astro-cid-6pyqhcr2><a href="/blog/tags/mastodon" data-astro-cid-6pyqhcr2>Mastodon</a></li></ul> </div> </div> </article><article class="post" data-astro-cid-nni2rj4u> <div class="post-date" data-astro-cid-nni2rj4u> <time datetime="2024-03-27T17:30:00.000Z"> 27 Mar 2024 </time> </div> <h2 class="post-title" data-astro-cid-nni2rj4u> <a href="/blog/switching-to-astro/" data-astro-cid-nni2rj4u>Switching to Astro</a> </h2> <div class="post-excerpt" data-astro-cid-nni2rj4u>This blog has been neglected for about 5 years and has been burning away compute cycles on an old Wordpress install and MySql DB. And I've been too <s>lazy</s> busy to update it to something that's not needlessly costing me £10/month.
But no longer. Now we're on Astro, taking advantage of static site generation and…</div> <div class="post-footer" data-astro-cid-nni2rj4u> <div class="tag-list" data-astro-cid-nni2rj4u> <ul class="tag-cloud" data-astro-cid-6pyqhcr2><li data-astro-cid-6pyqhcr2><a href="/blog/tags/astro" data-astro-cid-6pyqhcr2>Astro</a></li><li data-astro-cid-6pyqhcr2><a href="/blog/tags/code" data-astro-cid-6pyqhcr2>Code</a></li></ul> </div> </div> </article><article class="post" data-astro-cid-nni2rj4u> <div class="post-date" data-astro-cid-nni2rj4u> <time datetime="2019-05-26T18:33:34.000Z"> 26 May 2019 </time> </div> <h2 class="post-title" data-astro-cid-nni2rj4u> <a href="/blog/split-your-cmder-window-into-multiple-panels/" data-astro-cid-nni2rj4u>Split your cmder window into multiple panels</a> </h2> <div class="post-excerpt" data-astro-cid-nni2rj4u>cmder is my go-to shell for Windows. Up until recently, I was unaware that it could be split into multiple panels.
There doesn't seem to be a menu option to do it, but it’s easily done with these commands (which, yes, I need to look up every time).
Split the window horizontally (left/right split):
cmd -new_console:s…</div> <div class="post-footer" data-astro-cid-nni2rj4u> <div class="tag-list" data-astro-cid-nni2rj4u> <ul class="tag-cloud" data-astro-cid-6pyqhcr2><li data-astro-cid-6pyqhcr2><a href="/blog/tags/cmder" data-astro-cid-6pyqhcr2>Cmder</a></li><li data-astro-cid-6pyqhcr2><a href="/blog/tags/code" data-astro-cid-6pyqhcr2>Code</a></li><li data-astro-cid-6pyqhcr2><a href="/blog/tags/how-to" data-astro-cid-6pyqhcr2>How To</a></li></ul> </div> </div> </article><article class="post" data-astro-cid-nni2rj4u> <div class="post-date" data-astro-cid-nni2rj4u> <time datetime="2018-10-04T12:41:31.000Z"> 04 Oct 2018 </time> </div> <h2 class="post-title" data-astro-cid-nni2rj4u> <a href="/blog/fix-error-0x80072ee7-on-windows-10/" data-astro-cid-nni2rj4u>Fix Error 0x80072EE7 on Windows 10</a> </h2> <div class="post-excerpt" data-astro-cid-nni2rj4u>I just installed the Windows 10 October 2018 update and was hit with an issue that Microsoft Store and Edge wouldn't connect to the internet. Dreaded error 0x80072EE7.
Tried repairing etc. as suggested around the web, but the issue for me turned out to be that I didn't have IPv6 enabled in my network adaptor settings.…</div> <div class="post-footer" data-astro-cid-nni2rj4u> <div class="tag-list" data-astro-cid-nni2rj4u> <ul class="tag-cloud" data-astro-cid-6pyqhcr2><li data-astro-cid-6pyqhcr2><a href="/blog/tags/how-to" data-astro-cid-6pyqhcr2>How To</a></li><li data-astro-cid-6pyqhcr2><a href="/blog/tags/windows-10" data-astro-cid-6pyqhcr2>Windows 10</a></li></ul> </div> </div> </article> </div>  </section>  </main> <footer data-astro-cid-sz7xmlte> <div class="footer-inner" data-astro-cid-sz7xmlte> <div class="footer-top" data-astro-cid-sz7xmlte> <p class="colophon" data-astro-cid-sz7xmlte>
&copy; 2026 Kevin Wilson
</p> </div> <div class="social-links" data-astro-cid-sz7xmlte> <a href="https://mastodon.social/@kwilson81" target="_blank" data-astro-cid-sz7xmlte> <span class="sr-only" data-astro-cid-sz7xmlte>Follow Me on Mastodon</span> <svg viewBox="0 0 16 16" aria-hidden="true" width="24" height="24" data-astro-cid-sz7xmlte> <path fill="currentColor" d="M11.19 12.195c2.016-.24 3.77-1.475 3.99-2.603.348-1.778.32-4.339.32-4.339 0-3.47-2.286-4.488-2.286-4.488C12.062.238 10.083.017 8.027 0h-.05C5.92.017 3.942.238 2.79.765c0 0-2.285 1.017-2.285 4.488l-.002.662c-.004.64-.007 1.35.011 2.091.083 3.394.626 6.74 3.78 7.57 1.454.383 2.703.463 3.709.408 1.823-.1 2.847-.647 2.847-.647l-.06-1.317s-1.303.41-2.767.36c-1.45-.05-2.98-.156-3.215-1.928a3.614 3.614 0 0 1-.033-.496s1.424.346 3.228.428c1.103.05 2.137-.064 3.188-.189zm1.613-2.47H11.13v-4.08c0-.859-.364-1.295-1.091-1.295-.804 0-1.207.517-1.207 1.541v2.233H7.168V5.89c0-1.024-.403-1.541-1.207-1.541-.727 0-1.091.436-1.091 1.296v4.079H3.197V5.522c0-.859.22-1.541.66-2.046.456-.505 1.052-.764 1.793-.764.856 0 1.504.328 1.933.983L8 4.39l.417-.695c.429-.655 1.077-.983 1.934-.983.74 0 1.336.259 1.791.764.442.505.661 1.187.661 2.046v4.203z" data-astro-cid-sz7xmlte></path> </svg> </a> <a href="https://github.com/kwilson" target="_blank" data-astro-cid-sz7xmlte> <span class="sr-only" data-astro-cid-sz7xmlte>See what I'm up to on GitHub</span> <svg viewBox="0 0 16 16" aria-hidden="true" width="24" height="24" data-astro-cid-sz7xmlte> <path fill="currentColor" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z" data-astro-cid-sz7xmlte></path> </svg> </a> </div> </div> </footer>   </body> </html> 