{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "Erik Vorhes",
  "language": "en-US",
  "home_page_url": "https://erikvorhes.com/",
  "feed_url": "https://erikvorhes.com/feed.json",
  "description": "Erik Vorhes has been putting stuff on the internet since the 1900s. This is his personal site.",
  "authors": [
    {
      "name": "Erik Vorhes"
    }
  ],
  "items": [
    {
      "id": "https://erikvorhes.com/notes/beginning-again-again/",
      "url": "https://erikvorhes.com/notes/beginning-again-again/",
      "title": "Beginning again, again",
      "content_html": "<p>It’s been over a decade since I’ve written anything much longer than a tweet.<a href=\"https://erikvorhes.com/notes/beginning-again-again/#fn1\" id=\"fnref1\"><span class=\"visually-hidden\">footnote </span><sup class=\"footnote__ref\">1</sup></a> This is entirely my own doing; something always felt more important, or I convinced myself that writing my thinking down was not worth the trouble. There are so many lost thoughts, and I’d like to apologize to them, wherever they’ve gone.</p>\n<p>Times — and my own determination to write things down — have changed. The push to rely on generating everything through LLMs has reminded me that the act of writing is itself an important mode of thinking,<a href=\"https://erikvorhes.com/notes/beginning-again-again/#fn2\" id=\"fnref2\"><span class=\"visually-hidden\">footnote </span><sup class=\"footnote__ref\">2</sup></a> and there’s no better way to learn something than to attempt to write about it. This thing should be about the journey <em>and</em> the destination.</p>\n<p>To kick things off, I ported a bunch of things over from <a href=\"https://erikanderica.org/\">the family website</a>, and I might consult <a href=\"https://web.archive.org\">the wayback machine</a> for things I’ve lost. I’ve also  included a few things I’ve thought about elsewhere, roughly in time with when I originally wrote them.<a href=\"https://erikvorhes.com/notes/beginning-again-again/#fn3\" id=\"fnref3\"><span class=\"visually-hidden\">footnote </span><sup class=\"footnote__ref\">3</sup></a> The site itself is (and probably always will be) a work in progress. I know there are rough edges, but it’s better to start and refine than to wait any longer.</p>\n<p>I can’t promise that anything on this little site will be any good, but then again, I’m doing this thing for <em>me</em>. If you enjoy any of it, too? All the better.</p>\n<footer class=\"footnotes flow\">\n<h2 id=\"footnotes\">Footnotes</h2>\n<ol>\n<li class=\"flow\" id=\"fn1\"><p>RIP, Twitter. <a href=\"https://erikvorhes.com/notes/beginning-again-again/#fnref1\" class=\"footnote__backref\"><span class=\"visually-hidden\">back to link to footnote 1</span><span aria-hidden=\"true\">↩</span></a></p>\n</li>\n<li class=\"flow\" id=\"fn2\"><p>With apologies to and appreciation of <a href=\"https://www.jstor.org/stable/356095\">Janet Emig’s classic article on composition</a>. <a href=\"https://erikvorhes.com/notes/beginning-again-again/#fnref2\" class=\"footnote__backref\"><span class=\"visually-hidden\">back to link to footnote 2</span><span aria-hidden=\"true\">↩</span></a></p>\n</li>\n<li class=\"flow\" id=\"fn3\"><p>It felt good to extract a couple things from the social media gardens. <a href=\"https://erikvorhes.com/notes/beginning-again-again/#fnref3\" class=\"footnote__backref\"><span class=\"visually-hidden\">back to link to footnote 3</span><span aria-hidden=\"true\">↩</span></a></p>\n</li>\n</ol>\n</footer>\n",
      "date_published": "2026-03-24T00:00:00Z"
    }
    ,
    {
      "id": "https://erikvorhes.com/notes/atrocities/",
      "url": "https://erikvorhes.com/notes/atrocities/",
      "title": "On atrocities",
      "content_html": "<p>It’s hard to know what to say about all the terrible things happening in or created by the United States these days — disappearing immigrants in Minnesota and everywhere, covering up for years of sexual abuse, stripping trans people of their rights in Kansas, or bombing schools in Iran; the list goes on and on and on. I’m reminded of a quiet conversation from <cite>Andor</cite>,<a href=\"https://erikvorhes.com/notes/atrocities/#fn1\" id=\"fnref1\"><span class=\"visually-hidden\">footnote </span><sup class=\"footnote__ref\">1</sup></a> between Karis Nemik and Cassian Andor:</p>\n<p><picture><source type=\"image/avif\" srcset=\"https://erikvorhes.com/notes/atrocities/hS-XR9unyV-1280.avif 1280w\"><source type=\"image/webp\" srcset=\"https://erikvorhes.com/notes/atrocities/hS-XR9unyV-1280.webp 1280w\"><img loading=\"lazy\" decoding=\"async\" data-pagefind-index-attrs=\"alt\" src=\"https://erikvorhes.com/notes/atrocities/hS-XR9unyV-1280.jpeg\" alt=\"Karis Nemik tells our hero what's up.\" width=\"1280\" height=\"536\"></picture></p>\n<blockquote>\n<p>The pace of repression outstrips our ability to understand it. And that is the real trick of the Imperial thought machine. It’s easier to hide behind 40 atrocities than a single incident.</p>\n</blockquote>\n<footer class=\"footnotes flow\">\n<h2 id=\"footnotes\">Footnotes</h2>\n<ol>\n<li class=\"flow\" id=\"fn1\"><p>“The Axe Forgets” (season 1, episode 5) <a href=\"https://erikvorhes.com/notes/atrocities/#fnref1\" class=\"footnote__backref\"><span class=\"visually-hidden\">back to link to footnote 1</span><span aria-hidden=\"true\">↩</span></a></p>\n</li>\n</ol>\n</footer>\n",
      "date_published": "2026-02-28T00:00:00Z"
    }
    ,
    {
      "id": "https://erikvorhes.com/notes/send-help/",
      "url": "https://erikvorhes.com/notes/send-help/",
      "title": "Send help, quick",
      "content_html": "<p>I was hoping I’d have this site up and running early this month, but I’ve been preoccupied with the occupation of Minneapolis, Saint Paul, and the rest of Minnesota. We’re doing our best to stand up to fascism, but it’s exhausting work, and we can use all the help we can get. Fortunately <a href=\"https://naomikritzer.com/2026/01/21/how-to-help-if-you-are-outside-minnesota/\">Naomi Kritzer has guidance on how you can help</a> our friends and family and neighbors.</p>\n",
      "date_published": "2026-01-26T00:00:00Z"
    }
    ,
    {
      "id": "https://erikvorhes.com/notes/focus/",
      "url": "https://erikvorhes.com/notes/focus/",
      "title": "Focus!",
      "content_html": "<p>One of the cool things about <a href=\"https://www.w3.org/Addressing/URL/4_2_Fragments.html\">the hash at the end of a URL</a> is that it can target an ID on the current page and auto-scroll the window to that point on the page. You can even use CSS to style it with <a href=\"https://w3c.github.io/csswg-drafts/selectors/#the-target-pseudo\">the <code>:target</code> pseudo-class</a>. This is a nice thing, especially on long or complicated pages.</p>\n<p>But it’s not perfect. If the target of the hash can’t receive focus<a href=\"https://erikvorhes.com/notes/focus/#fn1\" id=\"fnref1\"><span class=\"visually-hidden\">footnote </span><sup class=\"footnote__ref\">1</sup></a> and you hit <kbd>Tab</kbd>, you won’t go to the next focusable element on the page after the thing you scrolled to.<a href=\"https://erikvorhes.com/notes/focus/#fn2\" id=\"fnref2\"><span class=\"visually-hidden\">footnote </span><sup class=\"footnote__ref\">2</sup></a> Instead, you’ll go to the <em>first</em> thing on the page that can receive focus. This can be pretty disorienting!</p>\n<p>There are ways to fix the problem, though! The first is by tweaking your HTML to add a <a href=\"https://html.spec.whatwg.org/multipage/interaction.html#attr-tabindex\"><code>tabindex</code></a>:</p>\n<pre class=\"language-html\" tabindex=\"0\"><code class=\"language-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>h2</span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>footnotes<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">tabindex</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>-1<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>Footnotes<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>h2</span><span class=\"token punctuation\">></span></span></code></pre>\n<p>Here I’ve added <code>tabindex=&quot;-1&quot;</code> to the <code>h2</code> element so that the heading <em>programmatically</em> focusable.<a href=\"https://erikvorhes.com/notes/focus/#fn3\" id=\"fnref3\"><span class=\"visually-hidden\">footnote </span><sup class=\"footnote__ref\">3</sup></a> The browser will focus the heading if the URL hash is <code>#footnotes</code>. Now when you hit <kbd>Tab</kbd>, you’ll focus on the next focusable element after the heading, and all is right with the world.</p>\n<p>We can enhance this approach by introducing a little JavaScript. There are plenty of instances where you might forget to include that handy <code>tabindex=&quot;-1&quot;</code> <em>or</em> you’re afraid you’ll override an already-focusable element’s <code>tabindex</code> value. And if you’re working with a CMS or writing in a format that gets converted to HTML later, you might not have a straightforward way to do that work. To handle those scenarios, you can use something like this:<a href=\"https://erikvorhes.com/notes/focus/#fn4\" id=\"fnref4\"><span class=\"visually-hidden\">footnote </span><sup class=\"footnote__ref\">4</sup></a></p>\n<pre class=\"language-js\" tabindex=\"0\"><code class=\"language-js\"><span class=\"token comment\">/**\n * Focuses an element even if it isn't focusable.\n * @param {HTMLElement} target - element to focus\n */</span>\n<span class=\"token keyword\">function</span> <span class=\"token function\">focusTarget</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">target</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token comment\">// If the element already has focus</span>\n  <span class=\"token comment\">// we don't need to do anything</span>\n  <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>document<span class=\"token punctuation\">.</span>activeElement <span class=\"token operator\">===</span> target<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">return</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n\n  <span class=\"token comment\">// By default an element will have a `tabIndex` of -1</span>\n  <span class=\"token comment\">// but if it isn't explicitly set, it can't be focused</span>\n  <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>target<span class=\"token punctuation\">.</span>tabIndex <span class=\"token operator\">&lt;</span> <span class=\"token number\">0</span> <span class=\"token operator\">&amp;&amp;</span> <span class=\"token operator\">!</span>target<span class=\"token punctuation\">.</span><span class=\"token function\">getAttribute</span><span class=\"token punctuation\">(</span><span class=\"token string\">'tabIndex'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    target<span class=\"token punctuation\">.</span><span class=\"token function\">setAttribute</span><span class=\"token punctuation\">(</span><span class=\"token string\">'tabIndex'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'-1'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n\n  target<span class=\"token punctuation\">.</span><span class=\"token function\">focus</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token keyword\">function</span> <span class=\"token function\">focusHash</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">const</span> hash <span class=\"token operator\">=</span> window<span class=\"token punctuation\">.</span>location<span class=\"token punctuation\">.</span>hash<span class=\"token punctuation\">;</span>\n  <span class=\"token keyword\">const</span> target <span class=\"token operator\">=</span> hash <span class=\"token operator\">?</span> document<span class=\"token punctuation\">.</span><span class=\"token function\">querySelector</span><span class=\"token punctuation\">(</span>hash<span class=\"token punctuation\">)</span> <span class=\"token operator\">:</span> <span class=\"token keyword\">null</span><span class=\"token punctuation\">;</span>\n\n  <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>target<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token function\">focusTarget</span><span class=\"token punctuation\">(</span>target<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token comment\">// If there's already a hash, let's focus it.</span>\nwindow<span class=\"token punctuation\">.</span><span class=\"token function\">addEventListener</span><span class=\"token punctuation\">(</span><span class=\"token string\">'DOMContentLoaded'</span><span class=\"token punctuation\">,</span> focusHash<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">// If the hash changes, let's focus the new one.</span>\nwindow<span class=\"token punctuation\">.</span><span class=\"token function\">addEventListener</span><span class=\"token punctuation\">(</span><span class=\"token string\">'hashchange'</span><span class=\"token punctuation\">,</span> focusHash<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre>\n<p>Several years ago I remember seeing something like this, but when I needed it again, I couldn’t find it. I hope I don’t lose it again this time!</p>\n<footer class=\"footnotes flow\">\n<h2 id=\"footnotes\">Footnotes</h2>\n<ol>\n<li class=\"flow\" id=\"fn1\"><p>Which is the case for most HTML elements aside from <code>a</code> and form controls, sigh. <a href=\"https://erikvorhes.com/notes/focus/#fnref1\" class=\"footnote__backref\"><span class=\"visually-hidden\">back to link to footnote 1</span><span aria-hidden=\"true\">↩</span></a></p>\n</li>\n<li class=\"flow\" id=\"fn2\"><p>And in some browsers, if focus can’t be set, it won’t even scroll you to the right point on the page. <a href=\"https://erikvorhes.com/notes/focus/#fnref2\" class=\"footnote__backref\"><span class=\"visually-hidden\">back to link to footnote 2</span><span aria-hidden=\"true\">↩</span></a></p>\n</li>\n<li class=\"flow\" id=\"fn3\"><p>You could even use <code>tabindex=&quot;0&quot;</code> if you want to ensure that the element is always focusable by keyboard. <a href=\"https://erikvorhes.com/notes/focus/#fnref3\" class=\"footnote__backref\"><span class=\"visually-hidden\">back to link to footnote 3</span><span aria-hidden=\"true\">↩</span></a></p>\n</li>\n<li class=\"flow\" id=\"fn4\"><p>I’ve also made this available as a <a href=\"https://gist.github.com/erikvorhes/2ceb77788b9db10c89fd7200440f2de8\">GitHub Gist</a>. <a href=\"https://erikvorhes.com/notes/focus/#fnref4\" class=\"footnote__backref\"><span class=\"visually-hidden\">back to link to footnote 4</span><span aria-hidden=\"true\">↩</span></a></p>\n</li>\n</ol>\n</footer>\n",
      "date_published": "2023-02-25T00:00:00Z"
    }
    ,
    {
      "id": "https://erikvorhes.com/notes/cosmic-rays/",
      "url": "https://erikvorhes.com/notes/cosmic-rays/",
      "title": "Cosmic ray detection",
      "content_html": "<p>One of my favorite things about Abram &amp; Zora’s school is that students are encouraged to develop Personal Learning Projects. This year Abram was interested in cosmic rays, partly inspired by our listening to the “<a href=\"https://radiolab.org/podcast/bit-flip\">Bit Flip</a>” episode of <cite>Radiolab</cite>. So we used a bunch of household materials to build a cloud chamber, acquired some dry ice, found the darkest room in the house, and set to recording. The following video is the part that’s easy to share.</p>\n<iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/LFq3Crbh6bI?si=PU8Y8Ott0EbvrWqs\" title=\"Cosmic Rays (YouTube video player)\" frameborder=\"0\" allow=\"accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen=\"\"></iframe>\n<p>All told we observed: 8 <a href=\"https://en.wikipedia.org/wiki/Muon\">muons</a>, 3 <a href=\"https://en.wikipedia.org/wiki/Alpha_particle\">alpha particles</a>, 3 <a href=\"https://en.wikipedia.org/wiki/Particle_decay\">particle decays</a>, and 6 <a href=\"https://en.wikipedia.org/wiki/Electron\">electrons</a> &amp; <a href=\"https://en.wikipedia.org/wiki/Positron\">positrons</a>.</p>\n",
      "date_published": "2019-05-28T00:00:00Z"
    }
    ,
    {
      "id": "https://erikvorhes.com/notes/yolo/",
      "url": "https://erikvorhes.com/notes/yolo/",
      "title": "‘Yolo’: Let’s get real about Latin",
      "content_html": "<p>There’s a <a href=\"https://imgur.com/rO1PQmj\">pretend Latin conjugation of <em>yolo</em></a> floating around. It (probably unfortunately) got me thinking that the word form and conjugation could be improved.<a href=\"https://erikvorhes.com/notes/yolo/#fn1\" id=\"fnref1\"><span class=\"visually-hidden\">footnote </span><sup class=\"footnote__ref\">1</sup></a></p>\n<p>The conjugation pattern feels like it should follow that of irregular verbs <i lang=\"la\">volo</i>, <i lang=\"la\">nolo</i>, and <i lang=\"la\">malo</i> — even more so because <em>yolo</em> seems to convey a sense of desire or longing. A Latin version of <em>yolo</em> should also probably begin with an <strong><em>i</em></strong>, as words starting with <strong><em>y</em></strong> are hard to come by.</p>\n<p>Without further ado:</p>\n<h2 id=\"conjugation-of-iolo-iolle-iolui\">Conjugation of <i lang=\"la\">iolo, iolle, iolui</i></h2>\n<table id=\"yolo-infinitive\">\n  <caption>infinitive</caption>\n  <thead>\n    <tr>\n      <th scope=\"col\">tense</th>\n      <th scope=\"col\">form</th>\n      <th scope=\"col\">translation</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th scope=\"row\">present</th>\n      <td lang=\"la\">iolle</td>\n      <td>to only live once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\">perfect</th>\n      <td lang=\"la\">ioluisse</td>\n      <td>to have only lived once</td>\n    </tr>\n  </tbody>\n</table>\n<table id=\"yolo-imperative\">\n  <caption>imperative</caption>\n  <thead>\n    <tr>\n      <th scope=\"col\">number</th>\n      <th scope=\"col\">form</th>\n      <th scope=\"col\">translation</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th scope=\"row\"><abbr title=\"singular\">s.</abbr></th>\n      <td lang=\"la\">ioli</td>\n      <td>Live only once!</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"plural\">pl.</abbr></th>\n      <td lang=\"la\">iolite</td>\n      <td>Live only once, y’all!</td>\n    </tr>\n  </tbody>\n</table>\n<table id=\"yolo-present-indicative\">\n  <caption>present indicative</caption>\n  <thead>\n    <tr>\n      <th scope=\"col\">person</th>\n      <th scope=\"col\">form</th>\n      <th scope=\"col\">translation</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th scope=\"row\"><abbr title=\"first singular\">1 s.</abbr></th>\n      <td lang=\"la\">iolo\n      </td><td>I only live once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"second singular\">2 s.</abbr></th>\n      <td lang=\"la\">iovis\n      </td><td>you only live once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"third singular\">3 s.</abbr></th>\n      <td lang=\"la\">iovult\n      </td><td>it, she, or he only lives once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"first plural\">1 pl.</abbr></th>\n      <td lang=\"la\">iolumus\n      </td><td>we only live once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"second plural\">2 pl.</abbr></th>\n      <td lang=\"la\">iovultis\n      </td><td>y’all only live once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"third plural\">3 pl.</abbr></th>\n      <td lang=\"la\">iolunt\n      </td><td>they only live once</td>\n    </tr>\n  </tbody>\n</table>\n<table id=\"yolo-imperfect-indicative\">\n  <caption>imperfect indicative</caption>\n  <thead>\n    <tr>\n      <th scope=\"col\">person</th>\n      <th scope=\"col\">form</th>\n      <th scope=\"col\">translation</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th scope=\"row\"><abbr title=\"first singular\">1 s.</abbr></th>\n      <td lang=\"la\">iolebam\n      </td><td>I was only living once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"second singular\">2 s.</abbr></th>\n      <td lang=\"la\">iolebas\n      </td><td>you were only living once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"third singular\">3 s.</abbr></th>\n      <td lang=\"la\">iolebat\n      </td><td>it, she, or he was only living once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"first plural\">1 pl.</abbr></th>\n      <td lang=\"la\">iolebamus\n      </td><td>we were only living once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"second plural\">2 pl.</abbr></th>\n      <td lang=\"la\">iolebatis\n      </td><td>y’all were only living once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"third plural\">3 pl.</abbr></th>\n      <td lang=\"la\">iolebant\n      </td><td>they were only living once</td>\n    </tr>\n  </tbody>\n</table>\n<table id=\"yolo-future-indicative\">\n  <caption>future indicative</caption>\n  <thead>\n    <tr>\n      <th scope=\"col\">person</th>\n      <th scope=\"col\">form</th>\n      <th scope=\"col\">translation</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th scope=\"row\"><abbr title=\"first singular\">1 s.</abbr></th>\n      <td lang=\"la\">iolam\n      </td><td>I will only live once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"second singular\">2 s.</abbr></th>\n      <td lang=\"la\">ioles\n      </td><td>you will only live once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"third singular\">3 s.</abbr></th>\n      <td lang=\"la\">iolet\n      </td><td>it, she, or he will only live once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"first plural\">1 pl.</abbr></th>\n      <td lang=\"la\">iolemus\n      </td><td>we will only live once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"second plural\">2 pl.</abbr></th>\n      <td lang=\"la\">ioletis\n      </td><td>y’all will only live once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"third plural\">3 pl.</abbr></th>\n      <td lang=\"la\">iolent\n      </td><td>they will only live once</td>\n    </tr>\n  </tbody>\n</table>\n<table id=\"yolo-perfect-indicative\">\n  <caption>perfect indicative</caption>\n  <thead>\n    <tr>\n      <th scope=\"col\">person</th>\n      <th scope=\"col\">form</th>\n      <th scope=\"col\">translation</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th scope=\"row\"><abbr title=\"first singular\">1 s.</abbr></th>\n      <td lang=\"la\">iolui</td>\n      <td>I only lived once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"second singular\">2 s.</abbr></th>\n      <td lang=\"la\">ioluisti</td>\n      <td>you only lived once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"third singular\">3 s.</abbr></th>\n      <td lang=\"la\">ioluit</td>\n      <td>it, she, or he only lived once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"first plural\">1 pl.</abbr></th>\n      <td lang=\"la\">ioluimus</td>\n      <td>we only lived once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"second plural\">2 pl.</abbr></th>\n      <td lang=\"la\">ioluistis</td>\n      <td>y’all only lived once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"third plural\">3 pl.</abbr></th>\n      <td lang=\"la\">ioluerunt</td>\n      <td>they only lived once</td>\n    </tr>\n  </tbody>\n</table>\n<table id=\"yolo-pluperfect-indicative\">\n  <caption>pluperfect indicative</caption>\n  <thead>\n    <tr>\n      <th scope=\"col\">person</th>\n      <th scope=\"col\">form</th>\n      <th scope=\"col\">translation</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th scope=\"row\"><abbr title=\"first singular\">1 s.</abbr></th>\n      <td lang=\"la\">iolueram</td>\n      <td>I had only lived once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"second singular\">2 s.</abbr></th>\n      <td lang=\"la\">iolueras</td>\n      <td>you had only lived once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"third singular\">3 s.</abbr></th>\n      <td lang=\"la\">ioluerat</td>\n      <td>it, she, or he had only lived once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"first plural\">1 pl.</abbr></th>\n      <td lang=\"la\">iolueramus</td>\n      <td>we had only lived once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"second plural\">2 pl.</abbr></th>\n      <td lang=\"la\">iolueratis</td>\n      <td>y’all had only lived once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"third plural\">3 pl.</abbr></th>\n      <td lang=\"la\">ioluerant</td>\n      <td>they had only lived once</td>\n    </tr>\n  </tbody>\n</table>\n<table id=\"yolo-future-perfect-indicative\">\n  <caption>future perfect indicative</caption>\n  <thead>\n    <tr>\n      <th scope=\"col\">person</th>\n      <th scope=\"col\">form</th>\n      <th scope=\"col\">translation</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th scope=\"row\"><abbr title=\"first singular\">1 s.</abbr></th>\n      <td lang=\"la\">ioluero</td>\n      <td>I will have only lived once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"second singular\">2 s.</abbr></th>\n      <td lang=\"la\">iolueris</td>\n      <td>you will have only lived once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"third singular\">3 s.</abbr></th>\n      <td lang=\"la\">ioluerit</td>\n      <td>it, she, or he will have only lived once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"first plural\">1 pl.</abbr></th>\n      <td lang=\"la\">ioluerimus</td>\n      <td>we will have only lived once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"second plural\">2 pl.</abbr></th>\n      <td lang=\"la\">iolueritis</td>\n      <td>y’all will have only lived once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"third plural\">3 pl.</abbr></th>\n      <td lang=\"la\">ioluerint</td>\n      <td>they will have only lived once</td>\n    </tr>\n  </tbody>\n</table>\n<table id=\"yolo-present-subjunctive\">\n  <caption>present subjunctive</caption>\n  <thead>\n    <tr>\n      <th scope=\"col\">person</th>\n      <th scope=\"col\">form</th>\n      <th scope=\"col\">translation</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th scope=\"row\"><abbr title=\"first singular\">1 s.</abbr></th>\n      <td lang=\"la\">iolim</td>\n      <td>May I only live once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"second singular\">2 s.</abbr></th>\n      <td lang=\"la\">iolis</td>\n      <td>May you only live once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"third singular\">3 s.</abbr></th>\n      <td lang=\"la\">iolit</td>\n      <td>May it, she, or he only live once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"first plural\">1 pl.</abbr></th>\n      <td lang=\"la\">iolimus</td>\n      <td>May we only live once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"second plural\">2 pl.</abbr></th>\n      <td lang=\"la\">iolitis</td>\n      <td>May y’all only live once</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"third plural\">3 pl.</abbr></th>\n      <td lang=\"la\">iolint</td>\n      <td>May they only live once</td>\n    </tr>\n  </tbody>\n</table>\n<p>My ability to translate other subjunctive tenses gets pretty fuzzy, so here they are as a mental exercise:</p>\n<table id=\"yolo-other-subjunctive\">\n  <caption>other subjunctive tenses</caption>\n  <thead>\n    <tr>\n      <th scope=\"col\">person</th>\n      <th scope=\"col\">imperfect</th>\n      <th scope=\"col\">perfect</th>\n      <th scope=\"col\">pluperfect</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th scope=\"row\"><abbr title=\"first singular\">1 s.</abbr></th>\n      <td lang=\"la\">iollem</td>\n      <td lang=\"la\">ioluerim</td>\n      <td lang=\"la\">ioluissem</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"second singular\">2 s.</abbr></th>\n      <td lang=\"la\">iolles</td>\n      <td lang=\"la\">iolueris</td>\n      <td lang=\"la\">ioluisses</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"third singular\">3 s.</abbr></th>\n      <td lang=\"la\">iollet</td>\n      <td lang=\"la\">ioluerit</td>\n      <td lang=\"la\">ioluisset</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"first plural\">1 pl.</abbr></th>\n      <td lang=\"la\">iollemus</td>\n      <td lang=\"la\">ioluerimus</td>\n      <td lang=\"la\">ioluissemus</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"second plural\">2 pl.</abbr></th>\n      <td lang=\"la\">iolletis</td>\n      <td lang=\"la\">iolueritis</td>\n      <td lang=\"la\">ioluissetis</td>\n    </tr>\n    <tr>\n      <th scope=\"row\"><abbr title=\"third plural\">3 pl.</abbr></th>\n      <td lang=\"la\">iollent</td>\n      <td lang=\"la\">ioluerint</td>\n      <td lang=\"la\">ioluissent</td>\n    </tr>\n  </tbody>\n</table>\n<footer class=\"footnotes flow\">\n<h2 id=\"footnotes\">Footnotes</h2>\n<ol>\n<li class=\"flow\" id=\"fn1\"><p>Sorry — or you’re welcome, if you were thinking about doing something similar. <a href=\"https://erikvorhes.com/notes/yolo/#fnref1\" class=\"footnote__backref\"><span class=\"visually-hidden\">back to link to footnote 1</span><span aria-hidden=\"true\">↩</span></a></p>\n</li>\n</ol>\n</footer>\n",
      "date_published": "2014-02-11T00:00:00Z"
    }
    ,
    {
      "id": "https://erikvorhes.com/notes/facebook-developer-spotlight/",
      "url": "https://erikvorhes.com/notes/facebook-developer-spotlight/",
      "title": "Facebook Developer Spotlight",
      "content_html": "\n<p><a href=\"https://www.ramyasethuraman.com/\">Ramya Sethuraman</a> interviewed me about my interest in accessibility, especially while building the original version of <a href=\"https://www.facebook.com/business\">Facebook for Business</a>. I’ve preserved it here in case <a href=\"https://www.facebook.com/notes/2757117557909221/\">the original interview URL</a> rots into oblivion. I also fixed a few typos and updated the markup.</p>\n<h2 id=\"developer-spotlight-erik-vorhes-user-interface-engineer-business-marketing-team\">Developer Spotlight: Erik Vorhes (User Interface Engineer, Business Marketing Team)</h2>\n<figure>\n  <picture><source type=\"image/avif\" srcset=\"https://erikvorhes.com/notes/facebook-developer-spotlight/2SwWmdCe6E-960.avif 960w\"><source type=\"image/webp\" srcset=\"https://erikvorhes.com/notes/facebook-developer-spotlight/2SwWmdCe6E-960.webp 960w\"><img loading=\"lazy\" decoding=\"async\" data-pagefind-index-attrs=\"alt\" src=\"https://erikvorhes.com/notes/facebook-developer-spotlight/2SwWmdCe6E-960.png\" alt=\"A picture of me, from 2013\" width=\"960\" height=\"637\"></picture>\n  <figcaption>Am I as thoughtful as I think I look?</figcaption>\n</figure>\n<dl>\n<dt>Can you tell us a little bit about your work at Facebook and the recent accessibility enhancements that you released?</dt>\n<dd>\n<p>I work with the Business Marketing team to create materials that make it easier for businesses to find and communicate with people on Facebook who care about or are interested in what they do.</p>\n<p>The most recent accessibility enhancement I shipped was a new version of Facebook for Business, which uses semantic HTML; is keyboard accessible; and has large, readable text. This was a pretty big undertaking — and there’s still a lot to do!</p>\n</dd>\n<dt>What got you interested in accessibility?</dt>\n<dd>\n<p>I guess the short answer is that I want to make the world a better place.</p>\n<p>For almost as long as I can remember, my mom has worked with developmentally disabled adults in a variety of roles. She has been a model for me in how to treat others with love and respect, no matter what our differences are. Reflecting that attitude in my work matters to me; it seems to me that web accessibility is the most obvious way to be hospitable.</p>\n<p>I’ve always imagined the internet to be this amazing non-physical space, where we can learn, interact, and do all kinds of things without the constraints or prejudgements that we face in the world. It’s not quite so simple, of course, since we actually have bodies and still need a way to access the internet. Making those intermediaries easier to use means we’re that much closer to that ideal.</p>\n</dd>\n<dt>You recently <a href=\"https://speakerdeck.com/erikvorhes/accessibilitype-web-afternoon\">spoke at Web Afternoon</a> about accessible fonts. Can you talk a bit about your presentation?</dt>\n<dd>\n<p>When we think about web accessibility, we tend to focus on ensuring that things work with screen readers and alternate input devices and that interactive elements are easily distinguishable for people with colorblindness.</p>\n<p>All of those things are important, but we tend no to think much more about how we present content for people who <em>can</em> see. Much of the web remains text-based (or in the case of video or audio, there ought to be captions or transcripts or both). Because text is such a significant part of how we experience the web, we should treat it with care: by choosing a legible typeface and making our text readable (for example, through contrast, line-length, and spacing between lines), we make the web a better place for the people reading our stuff.</p>\n</dd>\n<dt>Do you have any aha moments to share with us about accessibility evangelizing?</dt>\n<dd>\n<p>Working with code is ultimately a binary experience, but interacting with people never is. Nothing beats observing people trying our product in real time. It is powerful to observe people using something you’ve made and to learn that part of it doesn’t work as expected or is challenging to use. That experience is doubly potent, because it exposes you to how different people do things and lets you internalize how frustrating those broken experiences can be. I’ve never seen engineers more motivated to solve something than when they really understand how their work affects the people who rely on it.</p>\n<p>Honest-to-goodness usability testing is the best way to go about it long-term. A quicker way is to have developers try their web products with a screenreader (but there is a learning curve, for sure).</p>\n</dd>\n<dt>What do you do besides coding at Facebook?</dt>\n<dd>\n<p>I like spending time with my family, especially when we get out to explore some of the amazing state and national parks near where we live. I also love reading and playing with type. And — shameless plug! — a friend and I write a usually-weekly column on new type for <a href=\"https://www.typedia.com\">Typedia</a>.</p>\n</dd>\n</dl>\n",
      "date_published": "2013-10-30T00:00:00Z"
    }
    ,
    {
      "id": "https://erikvorhes.com/notes/easter-2009/",
      "url": "https://erikvorhes.com/notes/easter-2009/",
      "title": "Easter 2009",
      "content_html": "<p>By far the best shot from another Zora photo shoot, when she came up to me and said, “Daddy, you stay with me.”</p>\n<picture><source type=\"image/avif\" srcset=\"https://erikvorhes.com/notes/easter-2009/Hy8ImG3M_R-300.avif 300w\"><source type=\"image/webp\" srcset=\"https://erikvorhes.com/notes/easter-2009/Hy8ImG3M_R-300.webp 300w\"><img loading=\"lazy\" decoding=\"async\" data-pagefind-index-attrs=\"alt\" src=\"https://erikvorhes.com/notes/easter-2009/Hy8ImG3M_R-300.jpeg\" alt=\"Zora in her Easter dress and hat\" width=\"300\" height=\"450\"></picture>",
      "date_published": "2009-04-13T00:00:00Z"
    }
    ,
    {
      "id": "https://erikvorhes.com/notes/fast-runner/",
      "url": "https://erikvorhes.com/notes/fast-runner/",
      "title": "Fast runner",
      "content_html": "<p>Zora and I had a brief photo shoot last night. We got some great shots, and then she decided to turn it into a game.</p>\n<picture><source type=\"image/avif\" srcset=\"https://erikvorhes.com/notes/fast-runner/vbD9Vczc7X-300.avif 300w\"><source type=\"image/webp\" srcset=\"https://erikvorhes.com/notes/fast-runner/vbD9Vczc7X-300.webp 300w\"><img loading=\"lazy\" decoding=\"async\" data-pagefind-index-attrs=\"alt\" src=\"https://erikvorhes.com/notes/fast-runner/vbD9Vczc7X-300.jpeg\" alt=\"Zora is a joyous blur\" width=\"300\" height=\"450\"></picture>\n",
      "date_published": "2009-04-03T00:00:00Z"
    }
    ,
    {
      "id": "https://erikvorhes.com/notes/amish/",
      "url": "https://erikvorhes.com/notes/amish/",
      "title": "The Amish",
      "content_html": "<p>Jason Kottke points to <a href=\"https://kottke.org/09/02/amish-technology\">a fascinating article about the Amish</a> and their relationship to/with technology. I remember my grandpa Orville telling me about an encounter he had with an Amish man while he was working for the telephone cooperative.</p>\n<p>This man had requested a phone installation for his farm. When Orville arrived and asked where the man would like his phone, he indicated a location on the outside of his house, near the front door.</p>\n<p>“Don’t you want it inside? It’ll be more convenient,” Orville asked. The man replied, “I don’t mind going outside when I need to use the phone. And I don’t want it using me.”</p>\n<p>I love technology, especially when it makes my life easier. But sometimes I wonder how much we’ve lost by always chasing after the latest shiny object. Do we control our toys, or do our toys control us?</p>\n",
      "date_published": "2009-02-12T00:00:00Z"
    }
    
  ]
}