<!DOCTYPE html>
<html lang="en">

<!-- Powered by Bear Blog -->

<head>
  
  
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5">
  
  <title>a giant glacier</title>
  <link rel="canonical" href="https://bard.bearblog.dev">
  


<meta name="bard" content="look-for-the-bear-necessities">


<!-- Primary Meta Tags -->
<meta name="title" content="a giant glacier">
<meta name="description" content="writer">

<!-- Open Graph / Facebook -->
<meta property="og:site_name" content="a giant glacier">
<meta property="og:title" content="a giant glacier">
<meta property="og:type" content="website">
<meta property="og:url" content="https://bard.bearblog.dev">
<meta property="og:description" content="writer">
<meta property="og:image" content="/static/og-image.png">


<!-- Twitter -->
<meta property="twitter:card" content="summary">
<meta property="twitter:url" content="https://bard.bearblog.dev">
<meta property="twitter:title" content="a giant glacier">
<meta property="twitter:description" content="writer">
<meta property="twitter:image" content="/static/og-image.png">



<!-- Microdata -->
<script type="application/ld+json">
  {
    "@context": "http://schema.org",
    "@type": "website",
    "name": "a giant glacier",
    "headline": "a giant glacier",
    "url": "https://bard.bearblog.dev",
    "description": "writer",
    "image": "/static/og-image.png"
  }
</script>
<link rel="alternate" type="application/atom+xml" href="/feed/" title="a giant glacier">
<link rel="alternate" type="application/rss+xml" href="/feed/?type=rss" title="a giant glacier">

  





  
  
  
    
        <link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20100%20100'%3E%3Ctext%20y='.9em'%20font-size='90'%3E🏔️%3C/text%3E%3C/svg%3E">
    



  <style data-name="default">
      
      
:root {
	--width: 900px;
	--font-main: Georgia, serif;
        --font-secondary: Georgia, serif;
        --font-scale: 1.3em;
	--background-color: #fffff8;
	--heading-color: #111;
	--text-color: #222;
	--link-color: #111;
	--visited-color: #222;
	--code-background-color: #f2f2f2;
	--code-color: #222;
	--blockquote-color: #222;
}

@media (prefers-color-scheme: dark) {
    :root {
		--background-color: #1f1b1b;
		--heading-color: #e2e1e1;
		--text-color: #cdcdcd;
		--link-color: #cdcdcd;
		--visited-color: #cdcdcd;
		--code-background-color: #1f1b1b;
		--code-color: #cdcdcd;
		--blockquote-color: #cdcdcd;
    }
}

hr {
    width: 85%;
    margin: 1em auto;
    border: 0;
    border-top: 1px dotted rgba(34, 34, 34, 0.15);
    height: 0;
}

@media (prefers-color-scheme: dark) {
    hr {
        border-top: 1px dotted rgba(205, 205, 205, 0.05);
    }
}


body {
    font-family: var(--font-secondary);
    font-size: var(--font-scale);
    margin: auto;
    padding: 20px;
    max-width: var(--width);
    text-align: left;
    background-color: var(--background-color);
    word-wrap: break-word;
    overflow-wrap: break-word;
    line-height: 1.5;
    color: var(--text-color);
}

h1, h2, h3, h4, h5, h6 {
  	font-family: var(--font-main);
    color: var(--heading-color);
  	font-style: italic;
}

strong, b {
  	color: var(--heading-color);
}

a {
    color: var(--link-color);
    cursor: pointer;
    text-decoration: underline;
}

nav a {
    margin-right: 5px;
    padding: 5px;
    background-color: var(--code-background-color);
    color: var(--link-color);
    text-decoration: none;
    border-radius: 3px;
    transition: background-color 0.2s ease;
}

nav a:hover {
    background-color: var(--text-color);
    color: var(--background-color);
}

@media (prefers-color-scheme: dark) {
    nav a {
        background-color: rgba(205, 205, 205, 0.1);
    }
}

button {
    margin: 0;
}

main {
    line-height: 1.6;
}

table {
    width: 100%;
}

hr {
    border: 0;
    border-top: 1px dashed;
}

img {
    max-width: 100%;
}

code {
    font-family: monospace;
    padding: 2px;
    background-color: var(--code-background-color);
    color: var(--code-color);
    border-radius: 3px;
}

blockquote {
    border-left: 1px solid #999;
    color: var(--code-color);
    padding-left: 20px;
    font-style: italic;
}

footer {
    padding: 25px 0;
    text-align: center;
}

button {
	border: 0;
  	background-color: inherit;
  	text-decoration: underline;
  	color: var(--heading-color);
}

.title {
    text-decoration: none;
}

.title h1 {
    font-size: 1.5em;
}

.inline {
    width: auto !important;
}

.highlight,
.code {
    padding: 1px 15px;
    background-color: var(--code-background-color);
    color: var(--code-color);
    border-radius: 3px;
    margin-block-start: 1em;
    margin-block-end: 1em;
    overflow-x: auto;
}

/* blog post list */
ul.blog-posts {
    list-style-type: none;
    padding: unset;
}

ul.blog-posts li {
    display: flex;
}

ul.blog-posts li span {
    flex: 0 0 130px;
}

ul.blog-posts li a:visited {
    color: var(--visited-color);
}
      
  </style>
</head>

<body class="home" onload="(function() { document.cookie = `timezone=${Intl.DateTimeFormat().resolvedOptions().timeZone};path=/`; })()">
  
  <header>
    <a class="title" href="/">
      <h1>
        a giant glacier
      </h1>
    </a>
    <nav>
      <p><a href='/'>Home</a>
<a href='/blog/'>Blog</a>
<a href='https://letterbird.co/daea'>Contact</a></p>

    </nav>
  </header>
  <main>
    


<p>I’m John, a writer and narrative designer with about 20 years of experience doing those things for fun and for a living.</p>
<p>This is where I house a handful of informal writings about topics I enjoy.</p>
<p><img src="https://bear-images.sfo2.cdn.digitaloceanspaces.com/bard-1702071317-0.jpg" alt="a giant glacier lies ahead" /></p>







    <script>
    window.addEventListener("load", () => {
        if (navigator.webdriver !== true) {
            const sendHit = score => {
                const params = new URLSearchParams({
                    blog: "bard",
                    token: "/",
                    referrer: document.referrer.includes("bard.bearblog.dev") ? "" : document.referrer,
                    title: "",
                    score: score
                });
                new Image().src = `/hit/?${params.toString()}`;
            };

            document.addEventListener('touchmove', () => sendHit(100), { once: true });
            document.addEventListener('mousemove', () => sendHit(100), { once: true });
        }
    });
    </script>



  </main>
  <footer>
    

<span>
    Powered by <a href="https://bearblog.dev">Bear <span role="img" class="bear" aria-label="ASCII bear logo">ʕ•ᴥ•ʔ</span></a>
</span>

  </footer>

  
  <script>
        (() => {
          "use strict";
          const times = document.querySelectorAll('time');
          const format_string = "" || "d M, Y"

          times.forEach(time => {
              time.innerText = formatDate(time.dateTime, format_string)
          });

          function formatDate(dateStr, formatStr) {
            const date = new Date(dateStr);
            const day = date.getDate();
            const month = date.getMonth();
            const year = date.getFullYear();
            const weekday = date.getDay();
            const hours = date.getHours();
            const minutes = date.getMinutes();
            const monthsFull = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
            const monthsShort = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
            const daysFull = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
            const daysShort = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
            
            function getOrdinal(n) {
                const s = ['th', 'st', 'nd', 'rd'];
                const v = n % 100;
                return s[(v - 20) % 10] || s[v] || s[0];
            }
            
            const map = {
                'd': () => day.toString().padStart(2, '0'),
                'm': () => (month + 1).toString().padStart(2, '0'),
                'Y': () => year.toString(),
                'y': () => year.toString().slice(-2),
                'F': () => monthsFull[month],
                'j': () => day.toString(),
                'D': () => daysShort[weekday],
                'l': () => daysFull[weekday],
                'S': () => getOrdinal(day),
                'M': () => monthsShort[month],
                'H': () => hours.toString().padStart(2, '0'),
                'h': () => {
                    let h = hours % 12;
                    h = h === 0 ? 12 : h;
                    return h.toString().padStart(2, '0');
                },
                'g': () => {
                    let h = hours % 12;
                    return h === 0 ? '12' : h.toString();
                },
                'i': () => minutes.toString().padStart(2, '0'),
                'a': () => hours < 12 ? 'am' : 'pm',
                'A': () => hours < 12 ? 'AM' : 'PM',
            };
            
            let result = '';
            for (let char of formatStr) {
                result += map[char] ? map[char]() : char;
            }
            return result;
        }
        })();
    </script>
    
</body>
<!-- ID: bard -->
<!-- 🐻 -->
</html>
