<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://markwrites.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://markwrites.io/" rel="alternate" type="text/html" /><updated>2026-08-27T17:09:58+00:00</updated><id>https://markwrites.io/feed.xml</id><title type="html">Mark W.rites</title><subtitle>Mark W.rites articles and essays on design, technology, and my lens of the world.</subtitle><entry><title type="html">Alt Text is the Ocean You Thought Was a Pond</title><link href="https://markwrites.io/alt-text-is-the-ocean-you-thought-was-a-pond/" rel="alternate" type="text/html" title="Alt Text is the Ocean You Thought Was a Pond" /><published>2026-08-27T00:00:00+00:00</published><updated>2026-08-27T00:00:00+00:00</updated><id>https://markwrites.io/alt-text-is-the-ocean-you-thought-was-a-pond</id><content type="html" xml:base="https://markwrites.io/alt-text-is-the-ocean-you-thought-was-a-pond/"><![CDATA[<figure>
	<img src="/images/articles/alt-text/hero.jpg" alt="Vast, dark ocean with moderate waves." />
	<figcaption>Photo by Phil Desforges</figcaption>
</figure>

<p>Alt text is vast and varied. There’s no way to make it perfect, but there are plenty of things we can do better. Let me show you what I know about that. Buckle up — there’s a <em>lot</em> to cover.</p>

<!--more-->

<div role="navigation" aria-labelledby="toc-heading">
	<h2 id="toc-heading">Table of contents:</h2>
	<ol>
		<li><a href="#before-we-dive-in">Before we dive in</a></li>
		<li><a href="#who-needs-alt-text">Who needs alt text?</a></li>
		<li><a href="#decision-tree-the-when-what-and-how">Decision tree: the when, what, and how</a></li>
		<li><a href="#composition-style-and-depth">Composition style and depth</a></li>
		<li><a href="#phonetics">Phonetics</a></li>
		<li><a href="#social-media">Social media</a></li>
		<li><a href="#video-also-needs-alt-text">Video also needs alt text</a></li>
	</ol>
</div>

<h2 id="before-we-dive-in">Before we dive in</h2>

<p>First, I’m not the almighty knower of <em>everything</em>. And <em>everything</em> is always changing. If you think I got something wrong, let me know. I’d rather learn something new than continue to fail.</p>

<p>Second, <strong>don’t forget about braille readers</strong>. They’re different than aural readers, which is what folks think of when you say “screen reader.”</p>

<p>The <a href="https://developer.mozilla.org/en-US/docs/Glossary/Accessibility_tree">accessibility tree</a> is the same source of truth for both aural and braille readers. The primary difference is that aural readers battle phonics, while braille readers battle real estate.</p>

<p>Aural readers often mispronounce words. But braille readers are literal, albeit with <a href="https://download.nvaccess.org/documentation/userGuide.html#BrailleAbbreviations">abbreviations</a> and <a href="https://www.perkins.org/resource/braille-short-form-contractions-that-begin-with-the-letter-a-video/">shorthand</a>. (That’s a lengthy topic for another day.)</p>

<p>So when I mention screen readers in this article, I’m primarily talking about aural readers. If it’s braille specific, I’ll call it out.</p>

<h2 id="who-needs-alt-text">Who needs alt text?</h2>

<p>I know, I know. “It’s for blind folks using screen readers.” This is <em>mostly</em> true. People use screen readers for a <a href="https://webaim.org/projects/screenreadersurvey10/">variety of reasons</a>. This includes visual impairments, neurodivergence, hearing impairments, and even motor skills.</p>

<p>Alt text also helps folks with no disabilities at all. “Situational accommodations” for scenarios like:</p>

<ul>
  <li>Preferences: text-only browsers or privacy concerns</li>
  <li>Circumstances: slow/expensive bandwidth or low-end devices</li>
  <li>Technology push-back: missing images or VPNs/firewalls</li>
</ul>

<p>Alt text is also <em>not</em> for some things. Lying liars will tell you they’re for search engines. <strong>Alt text is for people, not capitalism.</strong> Tell your friends.</p>

<p>Okay, let’s get into the good stuff…</p>

<h2 id="decision-tree-the-when-what-and-how">Decision tree: the when, what, and how</h2>

<p>So here’s that ocean. When to use alt text, what to describe, and how to add it.</p>

<h3 id="when-to-use-alt-text">When to use alt text</h3>
<p>First, we have to ask a simple question. Is what we’re describing <strong>functional</strong>, <strong>informative</strong>, or <strong>decorative</strong>?</p>

<ul>
  <li><strong>Functional images</strong> invoke an action. So they need alt text. A common example is social media interaction icons.</li>
  <li><strong>Informative images</strong> convey information. They, too, need alt text. One example is a book cover.</li>
  <li><strong>Decorative images</strong> are for visual effect. So alt text isn’t needed. One of the most common examples is a button with both a text label and an icon.</li>
</ul>

<p>When we don’t need alt text, we still need an empty <code class="language-plaintext highlighter-rouge">alt</code> attribute. And “empty” means <em>nothing</em> between the value quotes; not even a space.</p>

<h3 id="what-to-describe">What to describe</h3>
<p>The key considerations are <strong>context</strong>, <strong>efficiency</strong>, and <strong>avoiding redundancy</strong>.</p>

<p>Let’s say we have a gallery of a dog named Earl. It includes an overview that describes him, including his color and breed. With that context we can focus on what’s happening in the photos, instead of repeating his physical description in every one of them.</p>

<div class="image-code">
<figure class="highlight"><pre><code class="language-html" data-lang="html"><span class="nt">&lt;img</span> <span class="na">alt=</span><span class="s">"<s>Earl, our golden chihuahua dachshund mix dog,</s> standing on freshly-cut logs in our yard, looking off into the distance."</span><span class="nt">&gt;</span></code></pre></figure>
<img src="/images/articles/alt-text/01.jpg" alt="Earl, our golden chihuahua dachshund mix dog, standing on freshly-cut logs in our yard, looking off into the distance." />
</div>

<p>Other images might have visual characteristics that don’t need to be described, like this image from an <a href="https://markwrites.io/the-bell-centennial-typeface-story/">article about ink traps</a>.</p>

<div class="image-code">

<figure class="highlight"><pre><code class="language-html" data-lang="html"><span class="nt">&lt;img</span> <span class="na">alt=</span><span class="s">"Source letterforms for the capital N and M, showing unusually-large gaps in their crotches. A printed version shows the correct letterform with ink bleed."</span><span class="nt">&gt;</span></code></pre></figure>

<img src="/images/articles/alt-text/03.png" alt="Source letterforms for the capital N and M, showing unusually-large gaps in their crotches. A printed version shows the correct letterform with ink bleed." />
</div>

<p>The label and arrows help visually, but have less relevance as alt text.</p>

<p>An important part of context is the <strong>role</strong> of an image. Is it there to support content or is it a focal point? Take for example this photo of The Runaways, circa 1977, taken by Michael Ochs.</p>

<p><img src="/images/articles/alt-text/04.jpg" alt="The full band, lying down on a beach, facing the camera with their middle fingers raised." /></p>

<p>In the middle of an article, it may be supporting the content. If so, a description that’s too detailed may not be necessary, and can even slow down a reader. We can describe the baseline, then move on.</p>

<figure class="highlight"><pre><code class="language-html" data-lang="html"><span class="nt">&lt;img</span> <span class="na">alt=</span><span class="s">"The full band, lying down on a beach, facing the camera with their middle fingers raised."</span><span class="nt">&gt;</span></code></pre></figure>

<p>If it’s part of Michael’s portfolio, it’s a focal point. The image <em>is</em> the content. It’s showcasing his work, where composition and details are important. This extended alt text tells a story. It amplifies the purpose of the art.</p>

<figure class="highlight"><pre><code class="language-html" data-lang="html"><span class="nt">&lt;img</span> <span class="na">alt=</span><span class="s">"Looking head-on at all five members of The Runaways, lying down on a sunny beach with their middle fingers raised. They are facing the camera with the ocean at their backs. All of them are wearing bikinis except for Joan, who is wearing a black wetsuit. Their expressions are wry and rebellious."</span><span class="nt">&gt;</span></code></pre></figure>

<p>Finally, if there is text in an image, we have to decide what to repeat. <strong>Not all text in an image needs repeating in alt text</strong>. Lying liars will tell you otherwise.</p>

<p>Take for example, these two photos of signs with reader boards. The board on the top is the entire point of the image. So it should be in the alt text. But the one on the bottom isn’t about the job opening; it’s about the sign’s beautiful design. So that text doesn’t need to be included.</p>

<div class="image-code">

<figure class="highlight"><pre><code class="language-html" data-lang="html"><span class="nt">&lt;img</span> <span class="na">alt=</span><span class="s">"Store marquee that reads “if it’s in stock, we have it.”"</span><span class="nt">&gt;</span>

<span class="nt">&lt;img</span> <span class="na">alt=</span><span class="s">"Colorful neon sign on a painted metal canvas with metal piercings on each side. The name “United Battery” is stacked uniformly in a traditional typeface below a lightning bolt."</span><span class="nt">&gt;</span></code></pre></figure>

<img src="/images/articles/alt-text/05.jpg" alt="WHATEVERNEEDSOMEALTTEXTHERE" />
</div>

<h3 id="how-to-add-it">How to add it</h3>
<p>Here’s how to add alt text across different image types.</p>

<p><strong>Simple images</strong> like the following are easy.</p>

<p><img src="/images/articles/alt-text/06.jpg" alt="Graffiti that reads “Molotovs melt ice.”" /></p>

<p>We just roll out the alt attribute because the graffiti is all you need to know:</p>

<figure class="highlight"><pre><code class="language-html" data-lang="html"><span class="nt">&lt;img</span> <span class="na">alt=</span><span class="s">"Graffiti that reads “Molotovs melt ice.”"</span><span class="nt">&gt;</span></code></pre></figure>

<p><strong>Detailed images</strong> need more work. Such as infographics like this:</p>

<p><img src="/images/articles/alt-text/07.png" alt="Infographic described in the infographic code block below." /></p>

<p>Explaining this image in an alt attribute would be massive. Fortunately there’s a better option. Lying liars will tell you that <code class="language-plaintext highlighter-rouge">longdesc</code> is the answer. Nope. It’s deprecated and poorly supported by screen readers. Not to mention it’s shitty UX. And no one likes shitty UX.</p>

<p>The answer is a <code class="language-plaintext highlighter-rouge">details</code> tag:</p>

<figure class="highlight"><pre><code class="language-html" data-lang="html"><span class="nt">&lt;details&gt;</span>
 <span class="nt">&lt;summary&gt;</span>Infographic showing how gerrymandering cheats a majority out of a win.<span class="nt">&lt;/summary&gt;</span>
 <span class="nt">&lt;p&gt;</span>Graphic titled “Gerrymandering explained. Two different ways to divide 50 people into 5 districts.” There are three 5 by 10 grids of blue/red squares: 20 red and 30 blue. The third grid shows how creative line drawing can create a victory for the minority of overall blocks. The first, labeled “aggregate votes,” shows them as a single group, concluding with “60% blue, 40%, blue wins.” The second, labeled “compact but unfair,” shows them grouped into 5 equal blocks comprising 4 red squares and 6 blue squares, concluding with “5 blue districts, 0 red districts, blue wins.” The final, labeled “manipulated and inaccurate,” shows them grouped into 5 calculated groups to manipulate the majority, concluding with “2 blue districts, 3 red districts, red wins.” The caption reads “adapted from Washington Post’s adaptation of Stephen Nass’ illustration with a CC license (https://commons.wikimedia.org/wiki/File:How_to_Steal_an_Election_-_Gerrymandering.svg).”<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;/details&gt;</span></code></pre></figure>

<p>First, it separates along description into two parts: a summary and its details. And the details can be many paragraphs or even an entire data table. Second, it has built in disclosure functionality.</p>

<p>Some of you might be thinking, “but a details tag is visible on the page.” How observant of you. And thank you for questioning my logic. With a few lines of CSS you can hide it visually while retaining its presence for screen readers.</p>

<p><em>A blind accessibility engineer, <a href="https://dragonscave.space/@jscholes">James Scholes</a>, suggested this to me. We had a discussion following a poll I conducted on Mastodon for folks who use screen readers daily.</em></p>

<p>Another option for long descriptions is <code class="language-plaintext highlighter-rouge">figcaption</code>. Whereby the <code class="language-plaintext highlighter-rouge">details</code> tag has two parts, the <code class="language-plaintext highlighter-rouge">figcaption</code> is a single container for what is literally a caption intended to be visible aside the image. It can be used in place of or in harmony with a description in the <code class="language-plaintext highlighter-rouge">alt</code> attribute.</p>

<p>If the <code class="language-plaintext highlighter-rouge">figcaption</code> is descriptive, we include an empty <code class="language-plaintext highlighter-rouge">alt</code> attribute and an <code class="language-plaintext highlighter-rouge">aria-describedby</code> attribute to the <code class="language-plaintext highlighter-rouge">image</code> tag. This tells screen readers where the description is.</p>

<div class="image-code">

<figure class="highlight"><pre><code class="language-html" data-lang="html"><span class="nt">&lt;figure&gt;</span>
 <span class="nt">&lt;img</span> <span class="na">src=</span><span class="s">"earl.jpg"</span> <span class="na">alt=</span><span class="s">""</span> <span class="na">aria-describedby=</span><span class="s">"caption"</span><span class="nt">&gt;</span>
 <span class="nt">&lt;figcaption</span> <span class="na">id=</span><span class="s">"caption"</span><span class="nt">&gt;</span>Young gold chihuahua, looking intently towards the camera with his ears perked up.<span class="nt">&lt;/figcaption&gt;</span>
<span class="nt">&lt;/figure&gt;</span></code></pre></figure>

<img src="/images/articles/alt-text/02.jpg" alt="Young gold chihuahua, looking intently towards the camera with his ears perked up." />
</div>

<p>If the <code class="language-plaintext highlighter-rouge">figcaption</code> <em>doesn’t</em> describe the image, we supplement the <code class="language-plaintext highlighter-rouge">figcaption</code> with an <code class="language-plaintext highlighter-rouge">alt</code> attribute for the description. And we no longer need <code class="language-plaintext highlighter-rouge">aria-describedby</code>.</p>

<div class="image-code">

<figure class="highlight"><pre><code class="language-html" data-lang="html"><span class="nt">&lt;figure&gt;</span>
 <span class="nt">&lt;img</span> <span class="na">src=</span><span class="s">"earl.jpg"</span> <span class="na">alt=</span><span class="s">"Young gold chihuahua, looking intently into the camera with his ears perked up."</span><span class="nt">&gt;</span>
 <span class="nt">&lt;figcaption&gt;</span>My boi, Earl.<span class="nt">&lt;/figcaption&gt;</span>
<span class="nt">&lt;/figure&gt;</span></code></pre></figure>

<img src="/images/articles/alt-text/02.jpg" alt="Young gold chihuahua, looking intently towards the camera with his ears perked up." />
</div>

<p><strong>Grouped images</strong> may be considered a single image. Take for example a five-star rating system.</p>

<p><img src="/images/articles/alt-text/08.svg" alt="Rating scale showing 4 out of 5 stars." /></p>

<p>This is a group of similar images intended to convey a meaning as an aggregate. So we don’t need to describe each one. The W3C’s recommendation works perfectly:</p>

<figure class="highlight"><pre><code class="language-html" data-lang="html"><span class="nt">&lt;img</span> <span class="na">src=</span><span class="s">"star.svg"</span> <span class="na">alt=</span><span class="s">"4 out of 5 stars"</span><span class="nt">&gt;</span>
<span class="nt">&lt;img</span> <span class="na">src=</span><span class="s">"star.svg"</span> <span class="na">alt=</span><span class="s">""</span><span class="nt">&gt;</span>
<span class="nt">&lt;img</span> <span class="na">src=</span><span class="s">"star.svg"</span> <span class="na">alt=</span><span class="s">""</span><span class="nt">&gt;</span>
<span class="nt">&lt;img</span> <span class="na">src=</span><span class="s">"star.svg"</span> <span class="na">alt=</span><span class="s">""</span><span class="nt">&gt;</span>
<span class="nt">&lt;img</span> <span class="na">src=</span><span class="s">"star-empty.svg"</span> <span class="na">alt=</span><span class="s">""</span><span class="nt">&gt;</span></code></pre></figure>

<p>It’s not vital to force a screen reader to hit every image. So the aggregate description is read once, and the others are skipped over.</p>

<p>If you have a group of images, they’re probably already in an HTML group of some sort. So you can take a different approach:</p>

<figure class="highlight"><pre><code class="language-html" data-lang="html"><span class="nt">&lt;div</span> <span class="na">role=</span><span class="s">"image"</span> <span class="na">aria-label=</span><span class="s">"4 out of 5 stars"</span><span class="nt">&gt;</span>
 <span class="nt">&lt;img</span> <span class="na">src=</span><span class="s">"star.svg"</span> <span class="na">alt=</span><span class="s">""</span><span class="nt">&gt;</span>
 <span class="nt">&lt;img</span> <span class="na">src=</span><span class="s">"star.svg"</span> <span class="na">alt=</span><span class="s">""</span><span class="nt">&gt;</span>
 <span class="nt">&lt;img</span> <span class="na">src=</span><span class="s">"star.svg"</span> <span class="na">alt=</span><span class="s">""</span><span class="nt">&gt;</span>
 <span class="nt">&lt;img</span> <span class="na">src=</span><span class="s">"star.svg"</span> <span class="na">alt=</span><span class="s">""</span><span class="nt">&gt;</span>
 <span class="nt">&lt;img</span> <span class="na">src=</span><span class="s">"star-empty.svg"</span> <span class="na">alt=</span><span class="s">""</span><span class="nt">&gt;</span>
<span class="nt">&lt;/div&gt;</span></code></pre></figure>

<p>Using <code class="language-plaintext highlighter-rouge">role="image"</code> tells a screen reader that the <code class="language-plaintext highlighter-rouge">div</code> should be treated as an image. And the <code class="language-plaintext highlighter-rouge">aria-label</code> attribute tells the screen reader what to say.</p>

<p><strong>SVG images</strong> have their own system entirely. If they’re linked using an <code class="language-plaintext highlighter-rouge">img</code> tag, you can reference the aforementioned methods. But if the SVG code is embedded you’ll need three components: a <code class="language-plaintext highlighter-rouge">role</code> attribute, a <code class="language-plaintext highlighter-rouge">title</code> tag, and a <code class="language-plaintext highlighter-rouge">desc</code> tag.</p>

<figure class="highlight"><pre><code class="language-html" data-lang="html"><span class="nt">&lt;svg</span> <span class="na">role=</span><span class="s">"image"</span><span class="nt">&gt;</span>
 <span class="nt">&lt;title&gt;</span>Simple summary<span class="nt">&lt;/title&gt;</span>
 <span class="nt">&lt;desc&gt;</span>Longer, detailed description can go here with more details.<span class="nt">&lt;/desc&gt;</span>
 <span class="nt">&lt;path</span> <span class="na">d=</span><span class="s">"…"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/svg&gt;</span></code></pre></figure>

<p>As with the <code class="language-plaintext highlighter-rouge">details</code> tag, we have a description broken into two parts: a summary (<code class="language-plaintext highlighter-rouge">title</code> tag) and its details (<code class="language-plaintext highlighter-rouge">desc</code>) tag. But the <code class="language-plaintext highlighter-rouge">desc</code> tag isn’t required. If the alt text only needs to be simple, it can all be placed in the <code class="language-plaintext highlighter-rouge">title</code> tag.</p>

<p>If an embedded SVG doesn’t need alt text, it simply needs to be hidden from screen readers with <code class="language-plaintext highlighter-rouge">aria-hidden=“true”</code>.</p>

<p>A final note on the <em>how</em>. Use smart quotes instead of straight quotes. It’s generally good practice because in formal writing smart/straight quotes do not mean the same thing. But it’s especially helpful for alt text because in code the results can be unpredictable.</p>

<figure class="highlight"><pre><code class="language-html" data-lang="html"><span class="nt">&lt;img</span> <span class="na">alt=</span><span class="s">""</span><span class="na">Straight</span> <span class="na">quotes</span><span class="err">""</span><span class="nt">&gt;</span> 🚫

<span class="nt">&lt;img</span> <span class="na">alt=</span><span class="s">"“Smart quotes”"</span><span class="nt">&gt;</span> ✅</code></pre></figure>

<p>Straight quotes nested inside of straight quotes can result in <em>delimiter collision</em>. Who knows where the alt text begins/ends? (My syntax highlighter is even confused by it in the example above.)</p>

<p>Be intentional and formal. Just use smart quotes.</p>

<h2 id="composition-style-and-depth">Composition style and depth</h2>

<p>The two key considerations here are avoiding verbosity and knowing your audience. And there are four things you can do to help with this.</p>

<h3 id="use-proper-punctuation">Use proper punctuation</h3>
<p>Think about alt text like proper writing. Commas and periods break up content meaningfully. This helps with longer alt text and keeps alt text segregated from other content. Just remember that input equals output.</p>

<figure class="highlight"><pre><code class="language-html" data-lang="html"><span class="nt">&lt;img</span> <span class="na">alt=</span><span class="s">"hello friend it’s lovely to see you how are you"</span><span class="nt">&gt;</span> 🚫

<span class="nt">&lt;img</span> <span class="na">alt=</span><span class="s">"Hello, friend. It’s lovely to see you. How are you?"</span><span class="nt">&gt;</span> ✅</code></pre></figure>

<h3 id="front-load-important-information">Front load important information</h3>
<p>This is one of the most important parts of composition. Especially when the alt text is long. Take this photo for example:</p>

<p><img src="/images/articles/alt-text/09.jpg" alt="Trash can flying through the air, about to land on cops with riot gear. They look disorganized and there is a flare on the ground behind them. Ironically, a man directly behind them is seemingly disinterested, looking off into the distance." /></p>

<p>There’s a lot going on here. We need to tell the right story. Let’s break some things down.</p>

<p><img src="/images/articles/alt-text/10.png" alt="Grid of three instances of the previous photo, each highlighting a specific part of the image. In order: a soda can, a flare, and a person in the background." /></p>

<p>Is that can important? No. How about the flare? Maybe, but it’s not vital. And that dude in the back? Not really. But it’s probably noteworthy. So how do we put these pieces together to tell the right story? Like this:</p>

<figure class="highlight"><pre><code class="language-html" data-lang="html"><span class="nt">&lt;img</span> <span class="na">alt=</span><span class="s">"Trash can flying through the air, about to land on cops with riot gear. They look disorganized and there is a flare on the ground behind them. Ironically, a man directly behind them is seemingly disinterested, looking off into the distance."</span><span class="nt">&gt;</span></code></pre></figure>

<p>That tells the right story in the right order:</p>

<ol>
  <li><strong>Primary</strong>: “trash can flying through the air, about to land on cops with riot gear.”</li>
  <li><strong>Secondary</strong>: “they look disorganized and there is a flare on the ground behind them.”</li>
  <li><strong>Tertiary</strong>: “ironically, a man directly behind them is seemingly disinterested, looking off into the distance.”</li>
</ol>

<p>We lead in with <em>primary</em> info. A reader can get the gist of this image with only this sentence. The <em>secondary</em> info helps shape the narrative, and the tertiary info is only an aside. Those with the gift of sight are able to scan the photo to glean lots of different information. Even the parts that aren’t critical. <em>Tertiary</em> info can give everyone else an opportunity to do the same.</p>

<h3 id="write-for-your-audience">Write for your audience</h3>
<p>Knowing who you’re writing for is important. Are they academic? Tech savvy? Knowledgable about the topic at hand? What’s their demographic? You don’t need to know everything, but give it a moment of thought.</p>

<p>The French protest image is a perfect specimen for this. It was taken in Bordeaux, France. When I posted this image on Mastodon, it was for a general audience. And even though I have followers around the globe, most speak English. So I used the word “cops” in my alt text.</p>

<p>But if my primary audience was English-speaking folks in France, I would have used the word “flics.” That’s their slang equivalent for cops. This context switching isn’t critical, but it’s helpful.</p>

<h3 id="be-concise">Be concise</h3>
<p>Avoid non-essential visual information.</p>

<div class="image-code">

<figure class="highlight"><pre><code class="language-html" data-lang="html"><span class="nt">&lt;img</span> <span class="na">alt=</span><span class="s">"Quote from Jessica Williams that reads “I like my government how I like my coffee — not in my vagina.”"</span><span class="nt">&gt;</span></code></pre></figure>

<img src="/images/articles/alt-text/11.jpg" alt="Quote from Jessica Williams that reads “I like my government how I like my coffee — not in my vagina.”" />
</div>

<p>In this image we don’t need to mention the brick wall or the diagonal color shape. And we don’t need to begin with “meme of” or “graphic of.” We keep it simple because the quote is all that matters here.</p>

<p>Also, the transcriptions don’t have to be literal. In the image, the order of quote then citation makes sense visually. In the alt text, the order makes sense compositionally.</p>

<h2 id="phonetics">Phonetics</h2>

<p>This is important: <strong>no two screen readers sound alike</strong>. Even within the same dialect in the same operating system. And no screen reader has perfect pronunciation. But <strong>don’t try to hack or override pronunciation</strong>. Instead, be mindful and consider alternative ways to compose information.</p>

<div class="image-code">

<figure class="highlight"><pre><code class="language-html" data-lang="html"><span class="nt">&lt;img</span> <span class="na">alt=</span><span class="s">"Bag with IV fluids hanging from a stand."</span><span class="nt">&gt;</span> 🚫

<span class="nt">&lt;img</span> <span class="na">alt=</span><span class="s">"Bag with intravenous fluids hanging from a stand."</span><span class="nt">&gt;</span> ✅</code></pre></figure>

<img src="/images/articles/alt-text/12.jpg" alt="Bag with intravenous fluids." />
</div>

<p>In this image, the acronym “IV” can be pronounced “four” or “roman four.” It’s tempting to hack the system by swapping the acronym with “eye vee,” for phonetics. But this creates nonsense for folks using braille readers and for those not using screen readers at all.</p>

<p>In this case, using full words instead of the acronym is the best alternative. “Intravenous fluids” reads correctly for everyone.</p>

<p>And this context applies to dimensions, units of measurement, and locations:</p>

<figure class="highlight"><pre><code class="language-html" data-lang="html"><span class="nt">&lt;img</span> <span class="na">alt=</span><span class="s">"8′2″L x 12′4″W."</span><span class="nt">&gt;</span> 🚫
<span class="nt">&lt;img</span> <span class="na">alt=</span><span class="s">"8 feet, 2 inches long, by 12 feet, 4 inches wide."</span><span class="nt">&gt;</span> ✅

<span class="nt">&lt;img</span> <span class="na">alt=</span><span class="s">"5GB."</span><span class="nt">&gt;</span> 🚫
<span class="nt">&lt;img</span> <span class="na">alt=</span><span class="s">"5 gigabytes."</span><span class="nt">&gt;</span> ✅

<span class="nt">&lt;img</span> <span class="na">alt=</span><span class="s">"100lbs."</span><span class="nt">&gt;</span> 🚫
<span class="nt">&lt;img</span> <span class="na">alt=</span><span class="s">"100 pounds."</span><span class="nt">&gt;</span> ✅

<span class="nt">&lt;img</span> <span class="na">alt=</span><span class="s">"123 Abolish Ice Dr., St. Paul, MN."</span><span class="nt">&gt;</span> 🚫
<span class="nt">&lt;img</span> <span class="na">alt=</span><span class="s">"123 Abolish Ice Drive, Saint Paul, Minnesota."</span><span class="nt">&gt;</span> ✅</code></pre></figure>

<p>We can avoid ambiguity and mispronunciation simply by using whole words instead of symbols and abbreviations.</p>

<h2 id="social-media">Social Media</h2>

<p>Both practitioners and common folks publish content on social networks. So not everyone gets it right. But as professionals, it’s our duty to use our skills to make sure we do.</p>

<h3 id="dont-blindly-follow-a11y-trends">Don’t blindly follow “a11y” trends</h3>
<p>LinkedIn is filled with these trends. Herd mentality that’s performative for clout. And it hurts people who need better from us.</p>

<p>For example, LinkedIn has an alt-text input. They force you through it when posting an image. But there’s a trend of putting alt text in posts instead of using that tool. Or worse, replicating alt text in both places. Like the following example:</p>

<div class="video"><iframe title="LinkedIn redundancy screencast" width="100%" height="100%" src="https://vid.northbound.online/videos/embed/6sJmUjsWktAnsCrf53x555?title=0&amp;autoplay=0&amp;warningTitle=0&amp;api=1" allow="fullscreen" sandbox="allow-same-origin allow-scripts allow-popups allow-forms" allowfullscreen=""></iframe></div>

<p>That passage was repeated three times. <strong>Three times</strong>! As post content, fake alt text, and real alt text. Imagine having to use a screen reader every day, and dealing with this nonsense. And this was posted by a so-called “accessibility expert.”</p>

<p>This is so irresponsible that it makes me angry.</p>

<h3 id="dont-put-hashtags-mid-sentence">Don’t put hashtags mid-sentence</h3>
<p>Hashtags belong at the end of a post, not throughout. There are two important reasons for this. First, they’re converted to links, which are announced as such by screen readers. Second, the symbol itself is read aloud.</p>

<p>Here’s an example of what that sounds like:</p>

<div class="video"><iframe title="LinkedIn hashtags screencast" width="100%" height="100%" src="https://vid.northbound.online/videos/embed/d7JJuAMB4Nw6KgZygnRSCC?title=0&amp;autoplay=0&amp;warningTitle=0&amp;api=1" allow="fullscreen" sandbox="allow-same-origin allow-scripts allow-popups allow-forms" allowfullscreen=""></iframe></div>

<p>Besides hashtag littering, this person also used redundant alt text in the post. Accessibility problems twofold. And it, too, was posted by another “accessibility expert.”</p>

<h3 id="hashtag-formats">Hashtag formats</h3>
<p>On the topic of <a href="https://markwrites.io/hashtag-accessibility-by-everyone-for-everyone/">accessible hashtags</a>…</p>

<p>(<em>I know, I know. This isn’t about alt text. But it’s important. Calm down.</em>)</p>

<p>Lowercase hashtags are mispronounced by screen readers:</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">#uxdesign</code> can be read as “ucks design”</li>
  <li><code class="language-plaintext highlighter-rouge">#uidesign</code> can be read as “ooey design”</li>
  <li><code class="language-plaintext highlighter-rouge">#webaccessibility</code> can be read as “weeb accessibility”</li>
</ul>

<p>CamelCase* hashtags are almost always pronounced correctly:</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">#UXDesign</code> will be read as “UX design”</li>
  <li><code class="language-plaintext highlighter-rouge">#UIDesign</code> will be read as “UI design”</li>
  <li><code class="language-plaintext highlighter-rouge">#WebAccessibility</code> will be read as “web accessibility”</li>
</ul>

<p>And they improve readability for everyone. Especially folks with Dyslexia and other reading challenges.</p>

<p><em>*Before you invite me to a cage match about camel case vs Pascal case, there’s <a href="https://en.wikipedia.org/wiki/Camel_case#History">some history</a> you might want to know about.</em></p>

<h2 id="video-also-needs-alt-text">Video also needs alt text</h2>
<p>There are three different kinds of alt text for video: transcripts, descriptions, and captions. Each serves a different purpose. But they all benefit everyone. Even folks without disabilities. The <em>situational accommodations</em> noted earlier.</p>

<h3 id="captions-and-descriptions">Captions and descriptions</h3>
<p>For most video, use captions and descriptions. Each helps in a different way, and they support each other.</p>

<p><img src="/images/articles/alt-text/13.png" alt="PeerTube video page highlighting the captions overlaying the video and the description below it." /></p>

<p>Videos are generally long-form content, rich with visuals and audio. For sighted people, a title/thumbnail are quick scans for this decision point. Adding a description helps folks with screen readers decide if they want to watch it. It’s baseline alt text.</p>

<p>Captions are alt text of audio in real time. The target is folks with hearing impairments. But this is where those situational accommodations come into play. Captions are a gift for non-native speakers and people in quiet spaces.</p>

<h3 id="transcripts">Transcripts</h3>
<p>Use transcripts for full recaps of video. They’re helpful for people with visual impairments who don’t want to listen to an entire video.</p>

<p>They are either formatted with timestamps or speaker labels, depending on the context:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>00:00:50.860 -&gt; 00:00:53.420
Well, maybe not every style. Ref?
00:00:54.740 -&gt; 00:00:55.840
Aw, come on!

Speaker 1: Well, maybe not every style. Ref?
Speaker 2: Aw, come on!
</code></pre></div></div>

<p>Most video platforms will auto-caption for you (with an edit function) and also let you upload your own transcript files. Some will even translate for you.</p>

<h3 id="a-note-on-live-video">A note on live video</h3>
<p>Auto-generated captions and/or a sign language interpreter is ideal. But this can be a logistical challenge. It’s costly and there are technical hurdles that may not be available for some publishers.</p>

<p>If it’s simply not possible, commit to publishing an archived version afterward, complete with captions and a transcript. Announce this intention and make accommodations for folks who need captions/transcripts. Then they can forego the live video to watch the archived version at a later time.</p>

<h2 id="in-closing">In closing</h2>
<p>That was a <em>lot</em>. If you’re still here, you deserve a <a href="https://markwrites.io/vegan-cookie-recipe/">cookie</a>. Now go write some alt text that doesn’t suck. You can do it. I believe in you.</p>]]></content><author><name></name></author><category term="accessibility" /><summary type="html"><![CDATA[Photo by Phil Desforges Alt text is vast and varied. There’s no way to make it perfect, but there are plenty of things we can do better. Let me show you what I know about that. Buckle up — there’s a lot to cover.]]></summary></entry><entry><title type="html">Nano Bytes, Vol. 07</title><link href="https://markwrites.io/nano-bytes-07/" rel="alternate" type="text/html" title="Nano Bytes, Vol. 07" /><published>2026-08-15T00:00:00+00:00</published><updated>2026-08-15T00:00:00+00:00</updated><id>https://markwrites.io/nano-bytes-07</id><content type="html" xml:base="https://markwrites.io/nano-bytes-07/"><![CDATA[<figure>
	<img src="/images/nano-bytes/byte-poster-07.jpg" alt="An old, weathered, free-standing, plastic-letter marquee on a pole. Haphazardly-placed letters in different colors display the phrase “open Sunny’s Market,” with a comma where the apostrophe should be. The sign is capped with a floodlight, and many utility wires are floating against the bright blue sky behind it." />
	<figcaption>Photo by <a href="https://markwyner.some.pics/6a6383691e8ff">Mark Wyner</a></figcaption>
</figure>

<p>The curated list of things that bring me joy. Plus bytes on design, code, accessibility, privacy, and tools you might find useful. Available via <a href="/newsletter/">RSS and email</a>. This volume’s goodies…</p>

<!--more-->

<div class="byte-block">
	<section>
		
	<h2>The more you know
		<svg width="19" height="22" viewBox="0 0 19 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M12.75 0C17.16 0 18.5 1.34 18.5 5.75V17.25C18.5 19.59 16.59 21.5 14.25 21.5H4.25C1.91 21.5 0 19.59 0 17.25V5.75C0 1.34 1.34 0 5.75 0H12.75ZM3.59961 14.5C2.43992 14.5002 1.50021 15.4399 1.5 16.5996V17.25C1.5 18.77 2.73 20 4.25 20H14.25C15.77 20 17 18.77 17 17.25V16.291C16.9908 16.2355 16.986 16.1785 16.9902 16.1201C17.0002 16.0001 17 15.87 17 15.75V14.5H3.59961ZM5.75 1.5C2.17 1.5 1.5 2.18 1.5 5.75V13.6787C2.09207 13.252 2.81751 13.0001 3.59961 13H17V5.75C17 2.18 16.33 1.5 12.75 1.5H5.75ZM10.25 8.5C10.66 8.5 11 8.84 11 9.25C11 9.66 10.66 10 10.25 10H5.25C4.84 10 4.5 9.66 4.5 9.25C4.5 8.84 4.84 8.5 5.25 8.5H10.25ZM13.25 5C13.66 5 14 5.34 14 5.75C14 6.16 13.66 6.5 13.25 6.5H5.25C4.84 6.5 4.5 6.16 4.5 5.75C4.5 5.34 4.84 5 5.25 5H13.25Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>Local New Zealanders have a hill that they refer to as “Taumata” or “Taumata Hill.” But its <a href="https://mas.to/@markwyner/116809790268732492">official name</a> is <em>much</em> longer than that.</p>
		<p>There are two varieties of avocados. A-types begin the day as female and switch to male midday. B-types do the opposite. And this <a href="https://www.pnas.org/doi/10.1073/pnas.2606876123">heterodichogamy</a> began 40 million years ago. (Hat tip: <a href="https://beige.party/@rooster/117000952913461604">Jessica Rooster</a>.)</p>
	</section>
	<section>
		
	<h2>Tickle me pink
		<svg width="22" height="20" viewBox="0 0 22 20" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M10.75 19.3C10.44 19.3 10.14 19.26 9.89 19.17C6.07 17.86 0 13.21 0 6.34C0 2.84 2.83 0 6.31 0C8 0 9.58 0.66 10.75 1.84C11.92 0.66 13.5 0 15.19 0C18.67 0 21.5 2.85 21.5 6.34C21.5 13.22 15.43 17.86 11.61 19.17C11.36 19.26 11.06 19.3 10.75 19.3ZM6.31 1.5C3.66 1.5 1.5 3.67 1.5 6.34C1.5 13.17 8.07 16.97 10.38 17.76C10.56 17.82 10.95 17.82 11.13 17.76C13.43 16.97 20.01 13.18 20.01 6.34C20.01 3.67 17.85 1.5 15.2 1.5C13.68 1.5 12.27 2.21 11.36 3.44C11.08 3.82 10.44 3.82 10.16 3.44C9.23 2.2 7.83 1.5 6.31 1.5Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>Kevin Boyle captures isolation and emptiness with captivation beyond the stillness. <a href="https://www.kevinboylestudio.com/daysleeper1">Daysleeper</a> and <a href="https://www.kevinboylestudio.com/range1">Range</a> are series you must see.</p>
		<p>Jason Limon paints paintings you won’t believe are <a href="https://www.limon-art.com/">paintings</a>. They are wildly dimensional, both in emulated physicality and blending of style.</p>
	</section>
	<section>
		
	<h2>Design bytes
		<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M6.25 0C8.15992 0 9.49989 1.34013 9.5 3.25V5.25L10.9199 3.83008C12.2299 2.52008 14.2105 2.52008 15.5205 3.83008L17.6406 5.9502C18.9903 7.30006 18.9902 9.1999 17.6406 10.5498L16.1885 12H18.2402C20.1502 12 21.4901 13.3401 21.4902 15.25V18.25C21.4902 20.15 20.1502 21.4902 18.2402 21.4902H4.74023L4.51172 21.4844C4.28011 21.4731 4.03986 21.4454 3.7998 21.4004C3.6299 21.3604 3.48001 21.3203 3.33008 21.2803C3.16008 21.2303 2.99961 21.1704 2.84961 21.1104C2.80978 21.1003 2.77991 21.0803 2.75 21.0703C2.6194 21.0031 2.49663 20.9344 2.37891 20.8662C2.33278 20.8399 2.28639 20.814 2.24121 20.7861C2.09591 20.6973 1.95941 20.6065 1.83008 20.5107C1.81021 20.5008 1.8 20.4808 1.78027 20.4707C1.63027 20.3507 1.49035 20.2298 1.36035 20.0898C1.22037 19.9399 1.11976 19.8202 1.00977 19.7002C0.779814 19.4002 0.589895 19.0999 0.419922 18.75C0.400064 18.7201 0.389833 18.6804 0.379883 18.6406C0.322738 18.5073 0.275333 18.3734 0.236328 18.2314C0.227722 18.2044 0.218056 18.1776 0.209961 18.1504C0.201775 18.1231 0.195501 18.0956 0.19043 18.0684C0.151897 17.9315 0.122328 17.8236 0.0996094 17.71C0.0296593 17.3601 0 17.0499 0 16.75V3.25C0.000114183 1.34013 1.34008 0 3.25 0H6.25ZM8.28418 19.9062C8.25863 19.9346 8.23236 19.9624 8.20605 19.9902H18.2402C19.3202 19.9902 19.9902 19.3202 19.9902 18.2402V15.2402C19.9902 14.1602 19.3202 13.4902 18.2402 13.4902H14.71L8.28418 19.9062ZM3.24023 1.5C2.16032 1.5 1.49034 2.17014 1.49023 3.25V16.7402C1.49023 16.9502 1.50957 17.1704 1.55957 17.4004C1.5751 17.4703 1.59624 17.5523 1.61914 17.6416C1.62923 17.6643 1.64237 17.6859 1.65039 17.71C1.78765 18.1475 2.01328 18.5448 2.30664 18.8809C2.31935 18.8951 2.3326 18.9092 2.3457 18.9238C2.50219 19.0968 2.67703 19.2525 2.86719 19.3887C2.98595 19.4716 3.11452 19.5517 3.25879 19.6299C3.29412 19.6483 3.33012 19.6655 3.36621 19.6826C3.37401 19.6847 3.38185 19.6866 3.38965 19.6904C3.4003 19.6958 3.41433 19.7034 3.43066 19.7129C3.4696 19.7304 3.50909 19.7467 3.54883 19.7627C3.62627 19.7906 3.70284 19.8166 3.78027 19.8398C3.89022 19.8698 4.0004 19.9007 4.11035 19.9307C4.66018 20.0306 5.24987 19.9998 5.71973 19.8398C5.78973 19.8098 5.89047 19.7802 5.98047 19.7402C6.30018 19.6103 6.56019 19.4506 6.79004 19.2607C6.87197 19.1952 6.93305 19.1351 6.99121 19.083C7.01204 19.0543 7.03512 19.0263 7.06055 19C7.66033 18.3901 7.99016 17.5802 7.99023 16.7305V3.25C7.99013 2.17022 7.32001 1.5001 6.24023 1.5H3.24023ZM4.74023 14.9902C5.70023 14.9902 6.49023 15.7802 6.49023 16.7402C6.49023 17.7002 5.70023 18.4902 4.74023 18.4902C3.78023 18.4902 2.99023 17.7002 2.99023 16.7402C2.99023 15.7802 3.78023 14.9902 4.74023 14.9902ZM4.74023 16.4902C4.60023 16.4902 4.49023 16.6002 4.49023 16.7402C4.49023 17.0202 4.99023 17.0202 4.99023 16.7402C4.99023 16.6002 4.88023 16.4902 4.74023 16.4902ZM14.46 4.90039C13.71 4.15041 12.7305 4.15041 11.9805 4.90039L9.5 7.38086V16.5703L16.5801 9.5C17.34 8.74004 17.34 7.79049 16.5801 7.02051L14.46 4.90039Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>Japanese magazine <em>Idea</em> is a designer’s wonderland. Issue 288, <a href="https://page-spread.com/idea-288-visions-of-video-games/">Visions of Video Games</a>, is a gem among them. A study of retro video game logos, sprites, and other design elements.</p>
		<p>There are myriad typefaces that are beautiful and versatile. Much of the time they aren’t well-formed, with complete character sets, or priced for those of us without corporate budgets. <a href="https://github.com/github/mona-sans">Mona Sans</a> is the whole package. Aesthetic, functional, and open-source with a SIL license.</p>
	</section>
	<section>
		
	<h2>Code bytes
		<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M10.75 0C16.68 0 21.5 4.82 21.5 10.75C21.5 16.68 16.68 21.5 10.75 21.5C4.82 21.5 0 16.68 0 10.75C0 4.82 4.82 0 10.75 0ZM10.75 1.5C5.65 1.5 1.5 5.65 1.5 10.75C1.5 15.85 5.65 20 10.75 20C15.85 20 20 15.85 20 10.75C20 5.65 15.85 1.5 10.75 1.5ZM11.0703 8.11035C11.2303 7.73048 11.6699 7.55001 12.0498 7.71973C12.4297 7.8797 12.6103 8.32001 12.4404 8.70996L10.4404 13.3799C10.3204 13.6599 10.04 13.8301 9.75 13.8301C9.65005 13.8301 9.54992 13.8105 9.45996 13.7705C9.07999 13.6105 8.90038 13.1703 9.07031 12.7803L11.0703 8.11035ZM6.21973 8.21973C6.50973 7.92973 6.99027 7.92973 7.28027 8.21973C7.5702 8.50972 7.57022 8.99029 7.28027 9.28027L5.80957 10.75L7.28027 12.2197C7.5702 12.5097 7.57022 12.9903 7.28027 13.2803C7.13029 13.4303 6.93998 13.5 6.75 13.5C6.56001 13.5 6.36972 13.4303 6.21973 13.2803L4.21973 11.2803C3.92973 10.9903 3.92973 10.5097 4.21973 10.2197L6.21973 8.21973ZM14.2197 8.21973C14.5097 7.92973 14.9903 7.92973 15.2803 8.21973L17.2803 10.2197C17.5702 10.5097 17.5702 10.9903 17.2803 11.2803L15.2803 13.2803C15.1303 13.4303 14.94 13.5 14.75 13.5C14.56 13.5 14.3697 13.4303 14.2197 13.2803C13.9297 12.9903 13.9297 12.5097 14.2197 12.2197L15.6904 10.75L14.2197 9.28027C13.9297 8.99027 13.9297 8.50973 14.2197 8.21973Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>CSS offers lots of ways to position elements. <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Anchor_positioning/Using">Anchor positioning</a> is an emerging method that’s gaining traction. It comprises a long list of properties, functions, and values, with support that’s all over the place. I expect to see it reaching solid browser support in the very near future.</p>
		<p>One of the most exciting new CSS features is <code>@view-transition</code>. It used to be an HTML tag, and now it’s a CSS at-rule. That change broke this feature wide open with possibility. CSS Tricks has a <a href="https://css-tricks.com/cross-document-view-transitions-part-1/">two-part series</a> to get your primed.</p>
	</section>
	<section>
		
	<h2>Accessibility insights
		<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M10.75 0C16.68 0 21.5 4.82 21.5 10.75C21.5 16.68 16.68 21.5 10.75 21.5C4.82 21.5 0 16.68 0 10.75C0 4.82 4.82 0 10.75 0ZM10.75 1.5C5.65 1.5 1.5 5.65 1.5 10.75C1.5 15.85 5.65 20 10.75 20C15.85 20 20 15.85 20 10.75C20 5.65 15.85 1.5 10.75 1.5ZM15.0879 6.84863C15.4991 6.73933 15.9647 6.98532 16.0742 7.39648C16.1835 7.80767 15.9375 8.27334 15.5264 8.38281L12.1582 9.39551C11.9936 9.45065 11.8839 9.61535 11.8838 9.80664C11.9105 10.3548 11.9657 11.5325 12.0752 11.9707C12.3477 13.2227 13.8371 16.6396 13.8555 16.6816C14.0469 17.0929 13.8829 17.5586 13.4717 17.75C13.3622 17.8043 13.253 17.832 13.1436 17.832C12.8427 17.832 12.5678 17.6687 12.4307 17.3945L10.8975 14.0801L9.28027 17.3662C9.17063 17.6668 8.86911 17.8311 8.56836 17.8311C8.45889 17.831 8.34969 17.8042 8.24023 17.749C7.85664 17.5577 7.66524 17.0928 7.85645 16.6816C7.85645 16.6816 9.36256 13.2294 9.63672 11.9697C9.74616 11.5307 9.80055 10.353 9.82812 9.80566C9.85462 9.61358 9.71826 9.44966 9.55371 9.39453L6.18555 8.38184C5.74754 8.27234 5.50061 7.80617 5.6377 7.36816C5.7741 6.95716 6.24023 6.76553 6.65137 6.875C6.67932 6.8839 9.75066 7.86113 10.8418 7.86133C11.9644 7.86133 15.0879 6.84863 15.0879 6.84863ZM10.8975 4C11.7442 4.00004 12.4316 4.68744 12.4316 5.53418C12.4315 6.38158 11.7441 7.06734 10.8975 7.06738C10.0508 7.06738 9.36346 6.38162 9.36328 5.53418C9.36328 4.68744 10.0507 4 10.8975 4Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>Eric Bailey has published a PWA called <a href="https://ericwbailey.website/published/announcing-what-cant-i-press/">What Can’t I Press?</a>. It scans an app for keyboard shortcuts. Then you can safely add commands to your product that won’t interfere with default behavior.</p>
		<p>Never, ever use technology for one purpose that creates accessibility errors. Like this trending <a href="https://shieldfont.org/">ShieldFont</a> system that poisons AI scrapers. In doing so, it also poisons screen readers. What a nightmare. Avoid this and anything like it.</p>
	</section>
	<section>
		
	<h2>Privacy lockdown
		<svg width="19" height="22" viewBox="0 0 19 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M7.57031 0.277485C8.56029 -0.092505 10.1203 -0.0924849 11.1104 0.277485L16.1006 2.1476C17.5505 2.68766 18.6806 4.3274 18.6807 5.86733V13.297C18.6807 14.717 17.7903 16.487 16.6504 17.3371L12.3506 20.547C11.5206 21.187 10.4406 21.507 9.35059 21.507C8.26059 21.507 7.18008 21.1878 6.33008 20.5578L2.03027 17.3478C0.890379 16.4979 0.000165441 14.7177 0 13.3078V5.86733C1.73148e-05 4.32749 1.1303 2.68777 2.58008 2.1476L7.57031 0.277485ZM10.6104 1.6769C9.93031 1.43699 8.7705 1.43767 8.10059 1.68764L3.11035 3.55776C2.26054 3.87784 1.51089 4.95724 1.51074 5.87709V13.3078C1.51093 14.2577 2.18077 15.5877 2.93066 16.1476L7.23047 19.3576C8.38044 20.2175 10.3205 20.2175 11.4805 19.3576L15.7803 16.1476C16.5402 15.5777 17.2 14.2577 17.2002 13.3078V5.86733C17.2002 4.95734 16.4506 3.87701 15.6006 3.54702L10.6104 1.6769ZM11.7803 7.3976C12.0703 7.1076 12.5508 7.1076 12.8408 7.3976C13.1305 7.68756 13.1305 8.16723 12.8408 8.45717L8.54102 12.757C8.39106 12.9069 8.20069 12.9776 8.01074 12.9777C7.82074 12.9777 7.63047 12.907 7.48047 12.757L5.87012 11.1476C5.58025 10.8576 5.58023 10.377 5.87012 10.0871C6.16008 9.79709 6.64065 9.79716 6.93066 10.0871L8.01074 11.1671L11.7803 7.3976Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>No one should use Chrome. Ever. The built-in Chrome Sync makes it easy for an attacker to <a href="https://www.certosoftware.com/insights/cyberstalkers-exploiting-chrome-sync-to-spy/">spy on someone</a>, only if they have access to their physical device for a couple of minutes. This is a domestic abuser’s dreamland.</p>
		<p>EV chargers are <a href="https://www.saiflow.com/blog/the-hidden-ccs2-attack-surface-on-ev-chargers">exposing root credentials</a>. Meaning you can physically plug-in to a charger, connect via SSH, and you’re immediately root. For non-technical folks, this means you have complete control over the charging station. And, consequently, access to vehicles that plug-in for charging after that.</p>
	</section>
	<section>
		
	<h2>Tools and platforms
		<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M15.7402 20C16.1502 20 16.4902 20.34 16.4902 20.75C16.4902 21.16 16.1502 21.5 15.7402 21.5H5.74023C5.33023 21.5 4.99023 21.16 4.99023 20.75C4.99023 20.34 5.33023 20 5.74023 20H15.7402ZM15.4805 0C16.2602 1.17267e-05 16.8302 0.0296231 17.3301 0.0996094C20.81 0.479611 21.4902 2.55992 21.4902 6.00977V12.3301C21.4902 15.78 20.8095 17.8602 17.3096 18.2402C16.8398 18.3102 16.27 18.3398 15.4805 18.3398H6.00977C5.21999 18.3398 4.65006 18.3102 4.16016 18.2402C0.690177 17.8602 8.13835e-06 15.78 0 12.3301V6.00977C3.20806e-05 2.56 0.680012 0.47968 4.17969 0.0996094C4.65964 0.0296167 5.22989 6.25456e-06 6.00977 0H15.4805ZM6 1.5C5.29021 1.5 4.78028 1.52988 4.36035 1.58984C2.20035 1.82984 1.49023 2.50051 1.49023 6.02051V12.3398C1.49023 15.8497 2.19999 16.5297 4.33984 16.7598C4.77979 16.8198 5.28989 16.8496 6.00977 16.8496H15.4805C16.2002 16.8496 16.7002 16.8198 17.1201 16.7598C19.28 16.5198 19.9902 15.85 19.9902 12.3301V6.00977C19.9902 2.49998 19.2796 1.81984 17.1396 1.58984C16.6897 1.52988 16.1895 1.5 15.4697 1.5H6ZM16 12.1104C16.41 12.1104 16.75 12.4504 16.75 12.8604C16.7498 13.2702 16.4199 13.6104 16 13.6104H5.49023C5.08046 13.6102 4.73068 13.2701 4.73047 12.8604C4.73047 12.4504 5.0607 12.1104 5.4707 12.1104H16ZM5.60059 6.07031C6.15047 6.07045 6.60059 6.5204 6.60059 7.07031C6.60045 7.62004 6.14052 8.07005 5.59082 8.07031C5.0409 8.07031 4.59095 7.6202 4.59082 7.07031C4.59082 6.52031 5.03082 6.07031 5.59082 6.07031H5.60059ZM8.74023 6.07031C9.29023 6.07031 9.74023 6.52031 9.74023 7.07031C9.7401 7.6202 9.30015 8.07031 8.74023 8.07031C8.19032 8.07031 7.74037 7.6202 7.74023 7.07031C7.74023 6.52031 8.18023 6.07031 8.74023 6.07031ZM16 6.32031C16.41 6.32031 16.75 6.66031 16.75 7.07031C16.7499 7.4802 16.4199 7.82031 16 7.82031H12.3203C11.9104 7.82031 11.5704 7.4802 11.5703 7.07031C11.5703 6.66031 11.9103 6.32031 12.3203 6.32031H16Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>Jeff Halter recreated the classic Macintosh <a href="https://en.wikipedia.org/wiki/HyperCard">HyperCards</a>. It can be run on macOS natively, with no emulation. Get your nostalgia on, with <a href="https://morphing.cloud/hypercard/">Stacks</a>.</p>
		<p>Codeberg recently voted on <a href="https://blog.codeberg.org/protecting-our-floss-commons-from-llms.html">three motions</a> related to use of LLMs/AI in repos stored there. The results are not surprising, and are balanced. They haven’t outright banned AI code, but accept it only as an aside.</p>
	</section>
	<section>
		
	<h2>Antifascism
		<svg width="20" height="22" viewBox="0 0 20 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M15.7787 4.07193H15.5392V3.23539C15.5392 1.98469 14.5214 0.965987 13.2698 0.965987C12.6818 0.965987 12.1454 1.1907 11.7419 1.55894C11.3794 0.786371 10.5954 0.25 9.68664 0.25C8.77792 0.25 7.99388 0.78719 7.63056 1.55976C7.22705 1.19152 6.69067 0.966806 6.10265 0.966806C4.85114 0.966806 3.83325 1.9846 3.83325 3.23621V3.29854C3.46256 3.03364 3.00901 2.87781 2.5194 2.87781C1.26788 2.87781 0.25 3.8956 0.25 5.14721V12.3144C0.25 17.5173 4.48269 21.75 9.68641 21.75C14.8901 21.75 19.1228 17.5173 19.1228 12.3144V7.41745C19.1228 5.57295 17.622 4.07203 15.7782 4.07203L15.7787 4.07193ZM13.2699 1.92241C13.9941 1.92241 14.5838 2.51127 14.5838 3.23627V4.07199H11.956V3.23545C11.956 2.51127 12.5458 1.92241 13.2699 1.92241ZM8.37296 2.51948C8.37296 1.79531 8.96182 1.20563 9.68681 1.20563C10.4118 1.20563 11.0007 1.79449 11.0007 2.51948V4.07199C10.3421 4.07199 9.80573 4.60836 9.80573 5.26693C9.80573 6.29128 10.2691 7.20983 10.9974 7.82418C10.972 8.52622 10.3938 9.08964 9.68599 9.08964C8.96182 9.08964 8.37214 8.50078 8.37214 7.77578L8.37296 2.51948ZM4.78987 3.23547C4.78987 2.5113 5.37873 1.92162 6.10372 1.92162C6.8279 1.92162 7.41758 2.51048 7.41758 3.23547L7.4184 7.7749C7.4184 8.49908 6.82954 9.08875 6.10454 9.08875C5.38037 9.08875 4.79069 8.49989 4.79069 7.7749L4.78987 3.23547ZM1.20678 5.14721C1.20678 4.42304 1.79564 3.83336 2.52064 3.83336C3.24563 3.83336 3.83531 4.42222 3.83531 5.14721V7.775C3.83531 8.49918 3.24645 9.08886 2.52146 9.08886C1.79728 9.08886 1.2076 8.5 1.2076 7.775L1.20678 5.14721ZM18.1671 12.3136C18.1671 16.9899 14.3634 20.7939 9.68685 20.7939C5.01032 20.7939 1.20657 16.9901 1.20657 12.3136V9.62366C1.57727 9.88856 2.03081 10.0444 2.52043 10.0444C3.24788 10.0444 3.89662 9.69993 4.31243 9.1652C4.72825 9.69911 5.37697 10.0444 6.10444 10.0444C6.83191 10.0444 7.48063 9.69993 7.89644 9.1652C8.31226 9.69911 8.96098 10.0444 9.68845 10.0444C10.7382 10.0444 11.6223 9.3284 11.8814 8.35901C12.2735 8.52058 12.7024 8.60997 13.1526 8.60997H14.5854V9.82294C11.3836 10.0674 8.8526 12.7516 8.8526 16.0158C8.8526 16.2798 9.06665 16.4931 9.32991 16.4931C9.59399 16.4931 9.80722 16.279 9.80722 16.0158C9.80722 13.1182 12.165 10.7604 15.0626 10.7604C15.3267 10.7604 15.5399 10.5463 15.5399 10.2831V8.13357C15.5399 7.86948 15.3259 7.65626 15.0626 7.65626H13.1509C11.8337 7.65626 10.7618 6.58433 10.7618 5.26718C10.7618 5.13514 10.8684 5.02771 11.0013 5.02771H15.7786C17.0957 5.02771 18.1676 6.09963 18.1676 7.41678L18.1671 12.3136Z" fill="currentColor" stroke="currentColor" stroke-width="0.5" />
		</svg>
	</h2>
	
		<p>Mullvad’s co-owner was the largest monetary contribute to a fascist party in Sweden. After a newspaper discovered this, they were <a href="/if-your-company-funnels-money-to-fascists-youre-a-fascist-company/">called out</a>. Their response was that they want to “cooperate with everyone,” including fascists. I say, “<a href="/mullvad-and-daniel-berntssons-failed-cleanup/">nope</a>.”</p>
	</section>
</div>
<h2>At the moment</h2>
<p>I took a mental-heath break over the past month. I produced almost nothing. Then I went to <a href="https://mas.to/@markwyner/117087065717363158">the coast</a> with my family. Now I’m ready to get back to my giant list. More on my <a href="https://markwyner.omg.lol/now">now page</a>.</p>]]></content><author><name></name></author><category term="nano-bytes" /><summary type="html"><![CDATA[Photo by Mark Wyner The curated list of things that bring me joy. Plus bytes on design, code, accessibility, privacy, and tools you might find useful. Available via RSS and email. This volume’s goodies…]]></summary></entry><entry><title type="html">Mullvad and Daniel Berntsson’s Failed Cleanup</title><link href="https://markwrites.io/mullvad-and-daniel-berntssons-failed-cleanup/" rel="alternate" type="text/html" title="Mullvad and Daniel Berntsson’s Failed Cleanup" /><published>2026-07-21T00:00:00+00:00</published><updated>2026-07-21T00:00:00+00:00</updated><id>https://markwrites.io/mullvad-and-daniel-berntssons-failed-cleanup</id><content type="html" xml:base="https://markwrites.io/mullvad-and-daniel-berntssons-failed-cleanup/"><![CDATA[<p><img src="/images/articles/mullvad/hero-part-two.png" alt="Illustration of a street sweeper vehicle." /></p>

<p>Mullvad just released an official long-form response to the <a href="/if-your-company-funnels-money-to-fascists-youre-a-fascist-company/">discovery</a> that their co-founder Daniel Berntsson supporting a fascist party in Sweden. Their response doesn’t help, and neither does Daniel’s essay on why he donated to them.</p>

<!--more-->

<p>In Mullvad’s <a href="https://mullvad.net/en/blog/2026/7/20/donation-controversy">post</a> they consign to being a “political company” who is “careful in not taking political stances outside of our narrow areas of focus. <strong>Because we want to cooperate with everyone</strong>.” They follow this up by noting “protecting ideas one does not agree with is the only way to have a neutral field where <em>truth</em> can be found.”</p>

<p>The rest of the post is just an argument about how Mullvad fights for privacy. Which they do. And they’re good at it. But dismissing fascist ideals because “societies need a great diversity of ideas” is unequivocally dangerous. Especially when they align with Nazi ideals.</p>

<h2 id="daniels-excuse">Daniel’s excuse</h2>
<p>In his <a href="https://dberntsson.info/2026/07/20/orebropartiet/">post</a> about why he supports the Örebro Party, he digs a deeper hole by citing reasons that align with how the German Nazis won people over.</p>

<p>After a weak, ambiguous analogy (good luck deciphering it), he cites the reasons the ÖP is special and warrants support. The most nefarious being nationalism with a racist, xenophobic accusation that immigrants are to blame for society’s problems.</p>

<p>This is a core ideology that drives the ÖP economic policies: “class-conscious populism,” as a way to unite “productive” classes against the “<a href="https://en.wikipedia.org/wiki/%C3%96rebro_Party#Transferiat">transferiat</a>” (people who need social welfare or who hold jobs in “made-up services”). And most of Daniel’s post is about this “deserves encouragement.”</p>

<p>The most offensive part of the ÖP “transferiat” fallacy is the xenophobia. They blame the problem on immigrants (sound familiar?) and promote repatriation policies to deport them. Party leader Markus Allard (who Daniel champions) is cited as saying “Sweden belongs to the Swedes. We have to make sure that we take care of our own damn people and we must deport these damn parasites who sit and live at our expense.”</p>

<blockquote>
  <p>We have to make sure that we take care of our own damn people and we must deport these damn parasites who sit and live at our expense.</p>
</blockquote>

<p>Daniel also spends a lot of time praising a Markus Allard and Malcom Kyeyune podcast. In that podcast Markus stated his opinion on immigrants and deportation: “they will also be forced to leave, even if they are born in Sweden, because they have no natural connection to Sweden. They are not Swedish.”</p>

<p>The Nazi Party began as the German Worker’s Party (DAP). That was their name when Adolf Hitler joined them. He was attracted to <a href="https://en.wikipedia.org/wiki/German_Workers%27_Party#Adolf_Hitler's_membership">the ideals</a> of the DAP founder, Anton Drexler. Those ideals being anti-Semitism, nationalism, anti-capitalism, and anti-Marxism.</p>

<h2 id="mullvads-excuse">Mullvad’s excuse</h2>
<p>The Nazis blamed the Jew. ÖP blames the Somalis. Nationalism and xenophobia, founded on racism. And this is the fundamental problem with Mullvad’s excuse. They’re trying to downplay Daniel’s fascism by promoting “diversity of ideas” with “rational debate.”</p>

<p>Debate is okay when we’re talking about pizza toppings. Debate is not okay when one side is trying to inflict suffering and violence on others because of racist lines drawn on a map.</p>

<p><strong>We cannot separate ethics from technology.</strong> Ever. Under any circumstances. And we certainly cannot give our money to organizations who support violent ideals like fascism. Mullvad is saying “we have a privacy product and you should support us for that reason because ethics are irrelevant.” Yet the dollars we spend with Mullvad have enabled a fascist party in Sweden to evolve from largely unknown to prime time. There <strong>is</strong> a direct connection.</p>

<h2 id="conclusion">Conclusion</h2>
<p>I’m gonna let Daniel put a bow on this essay with his own words:</p>

<p>“Do I like most of ÖP’s policies? No. Are they fit to run a country? No. (Neither are the other parties.) Do I want ÖP to get a lot of power? No. Will giving them a leg up in the competition with the other parties, given the local political circumstances, be a net positive? Maybe. Probably. Hopefully.”</p>

<p>Yet he solely contributed 72% of their total 2025 income. Enough for them to <a href="https://en.wikipedia.org/wiki/%C3%96rebro_Party#Becoming_a_national_party">become a national party</a>.</p>

<p>Tossing Mullvad and getting my refund was clearly the right call. Mullvad and Daniel tried to clean things up, but they failed. None of this makes me happy. In fact, it all breaks my heart. But the validation that they’re not interested in course correction is a <a href="https://vimeo.com/508568074?fl=pl&amp;fe=sh">spoon full of sugar</a>.</p>]]></content><author><name></name></author><category term="being-human" /><summary type="html"><![CDATA[Mullvad just released an official long-form response to the discovery that their co-founder Daniel Berntsson supporting a fascist party in Sweden. Their response doesn’t help, and neither does Daniel’s essay on why he donated to them.]]></summary></entry><entry><title type="html">Nano Bytes, Vol. 06</title><link href="https://markwrites.io/nano-bytes-06/" rel="alternate" type="text/html" title="Nano Bytes, Vol. 06" /><published>2026-07-12T00:00:00+00:00</published><updated>2026-07-12T00:00:00+00:00</updated><id>https://markwrites.io/nano-bytes-06</id><content type="html" xml:base="https://markwrites.io/nano-bytes-06/"><![CDATA[<figure>
	<img src="/images/nano-bytes/byte-poster-06.jpg" alt="A large, weathered, bright-red metal sign, protruding from a roof. In decorative typography it reads “forest park, burgers, freshly-frozen soft cream.”" />
	<figcaption>Photo by <a href="https://markwyner.some.pics/69b6589a109c4">Mark Wyner</a></figcaption>
</figure>

<p>The curated list of things that bring me joy. Plus bytes on design, code, accessibility, privacy, and tools you might find useful. Available via <a href="/newsletter/">RSS and email</a>. This volume’s goodies…</p>

<!--more-->

<div class="byte-block">
	<section>
		
	<h2>The more you know
		<svg width="19" height="22" viewBox="0 0 19 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M12.75 0C17.16 0 18.5 1.34 18.5 5.75V17.25C18.5 19.59 16.59 21.5 14.25 21.5H4.25C1.91 21.5 0 19.59 0 17.25V5.75C0 1.34 1.34 0 5.75 0H12.75ZM3.59961 14.5C2.43992 14.5002 1.50021 15.4399 1.5 16.5996V17.25C1.5 18.77 2.73 20 4.25 20H14.25C15.77 20 17 18.77 17 17.25V16.291C16.9908 16.2355 16.986 16.1785 16.9902 16.1201C17.0002 16.0001 17 15.87 17 15.75V14.5H3.59961ZM5.75 1.5C2.17 1.5 1.5 2.18 1.5 5.75V13.6787C2.09207 13.252 2.81751 13.0001 3.59961 13H17V5.75C17 2.18 16.33 1.5 12.75 1.5H5.75ZM10.25 8.5C10.66 8.5 11 8.84 11 9.25C11 9.66 10.66 10 10.25 10H5.25C4.84 10 4.5 9.66 4.5 9.25C4.5 8.84 4.84 8.5 5.25 8.5H10.25ZM13.25 5C13.66 5 14 5.34 14 5.75C14 6.16 13.66 6.5 13.25 6.5H5.25C4.84 6.5 4.5 6.16 4.5 5.75C4.5 5.34 4.84 5 5.25 5H13.25Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>The <a href="https://mas.to/@markwyner/116854694206594065">metric system</a> was devised by two chemists during the French Revolution. And it’s based on something called “realisation,” which means it can be quantified in the physical world.</p>
		<p>Denmark is implementing a <a href="https://www.ecoticias.com/en/denmark-is-turning-off-the-white-light-from-its-streetlamps-and-painting-a-road-red-to-solve-a-nighttime-crisis-that-almost-no-one-sees-urban-light-was-blocking-the-path-of-bats/31118/">street light system</a> designed to help bats and reduce light pollution. It’s a scientific engineering masterpiece, focused on color, cadence, and biology.</p>
	</section>
	<section>
		
	<h2>Tickle me pink
		<svg width="22" height="20" viewBox="0 0 22 20" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M10.75 19.3C10.44 19.3 10.14 19.26 9.89 19.17C6.07 17.86 0 13.21 0 6.34C0 2.84 2.83 0 6.31 0C8 0 9.58 0.66 10.75 1.84C11.92 0.66 13.5 0 15.19 0C18.67 0 21.5 2.85 21.5 6.34C21.5 13.22 15.43 17.86 11.61 19.17C11.36 19.26 11.06 19.3 10.75 19.3ZM6.31 1.5C3.66 1.5 1.5 3.67 1.5 6.34C1.5 13.17 8.07 16.97 10.38 17.76C10.56 17.82 10.95 17.82 11.13 17.76C13.43 16.97 20.01 13.18 20.01 6.34C20.01 3.67 17.85 1.5 15.2 1.5C13.68 1.5 12.27 2.21 11.36 3.44C11.08 3.82 10.44 3.82 10.16 3.44C9.23 2.2 7.83 1.5 6.31 1.5Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>The work of Oregon photographer <a href="https://www.brendonburton.com/interstice">Brendan Burton</a> is mesmerizing. Truly. He focuses on “mysterious visual narratives” on the “outskirts of society.” I’ve been perusing his images, and they keep calling me back.</p>
		<p>In the Spanish city of Alhaurín de la Torre, crochet teacher Eva Pacheco and her students (all women) created a <a href="https://mymodernmet.com/alhaurin-de-la-torre-crochet-canopy/">canopy</a> for shade and visual delight. It was commissioned to protect pedestrians from the sun in a sustainable way.</p>
	</section>
	<section>
		
	<h2>Design bytes
		<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M6.25 0C8.15992 0 9.49989 1.34013 9.5 3.25V5.25L10.9199 3.83008C12.2299 2.52008 14.2105 2.52008 15.5205 3.83008L17.6406 5.9502C18.9903 7.30006 18.9902 9.1999 17.6406 10.5498L16.1885 12H18.2402C20.1502 12 21.4901 13.3401 21.4902 15.25V18.25C21.4902 20.15 20.1502 21.4902 18.2402 21.4902H4.74023L4.51172 21.4844C4.28011 21.4731 4.03986 21.4454 3.7998 21.4004C3.6299 21.3604 3.48001 21.3203 3.33008 21.2803C3.16008 21.2303 2.99961 21.1704 2.84961 21.1104C2.80978 21.1003 2.77991 21.0803 2.75 21.0703C2.6194 21.0031 2.49663 20.9344 2.37891 20.8662C2.33278 20.8399 2.28639 20.814 2.24121 20.7861C2.09591 20.6973 1.95941 20.6065 1.83008 20.5107C1.81021 20.5008 1.8 20.4808 1.78027 20.4707C1.63027 20.3507 1.49035 20.2298 1.36035 20.0898C1.22037 19.9399 1.11976 19.8202 1.00977 19.7002C0.779814 19.4002 0.589895 19.0999 0.419922 18.75C0.400064 18.7201 0.389833 18.6804 0.379883 18.6406C0.322738 18.5073 0.275333 18.3734 0.236328 18.2314C0.227722 18.2044 0.218056 18.1776 0.209961 18.1504C0.201775 18.1231 0.195501 18.0956 0.19043 18.0684C0.151897 17.9315 0.122328 17.8236 0.0996094 17.71C0.0296593 17.3601 0 17.0499 0 16.75V3.25C0.000114183 1.34013 1.34008 0 3.25 0H6.25ZM8.28418 19.9062C8.25863 19.9346 8.23236 19.9624 8.20605 19.9902H18.2402C19.3202 19.9902 19.9902 19.3202 19.9902 18.2402V15.2402C19.9902 14.1602 19.3202 13.4902 18.2402 13.4902H14.71L8.28418 19.9062ZM3.24023 1.5C2.16032 1.5 1.49034 2.17014 1.49023 3.25V16.7402C1.49023 16.9502 1.50957 17.1704 1.55957 17.4004C1.5751 17.4703 1.59624 17.5523 1.61914 17.6416C1.62923 17.6643 1.64237 17.6859 1.65039 17.71C1.78765 18.1475 2.01328 18.5448 2.30664 18.8809C2.31935 18.8951 2.3326 18.9092 2.3457 18.9238C2.50219 19.0968 2.67703 19.2525 2.86719 19.3887C2.98595 19.4716 3.11452 19.5517 3.25879 19.6299C3.29412 19.6483 3.33012 19.6655 3.36621 19.6826C3.37401 19.6847 3.38185 19.6866 3.38965 19.6904C3.4003 19.6958 3.41433 19.7034 3.43066 19.7129C3.4696 19.7304 3.50909 19.7467 3.54883 19.7627C3.62627 19.7906 3.70284 19.8166 3.78027 19.8398C3.89022 19.8698 4.0004 19.9007 4.11035 19.9307C4.66018 20.0306 5.24987 19.9998 5.71973 19.8398C5.78973 19.8098 5.89047 19.7802 5.98047 19.7402C6.30018 19.6103 6.56019 19.4506 6.79004 19.2607C6.87197 19.1952 6.93305 19.1351 6.99121 19.083C7.01204 19.0543 7.03512 19.0263 7.06055 19C7.66033 18.3901 7.99016 17.5802 7.99023 16.7305V3.25C7.99013 2.17022 7.32001 1.5001 6.24023 1.5H3.24023ZM4.74023 14.9902C5.70023 14.9902 6.49023 15.7802 6.49023 16.7402C6.49023 17.7002 5.70023 18.4902 4.74023 18.4902C3.78023 18.4902 2.99023 17.7002 2.99023 16.7402C2.99023 15.7802 3.78023 14.9902 4.74023 14.9902ZM4.74023 16.4902C4.60023 16.4902 4.49023 16.6002 4.49023 16.7402C4.49023 17.0202 4.99023 17.0202 4.99023 16.7402C4.99023 16.6002 4.88023 16.4902 4.74023 16.4902ZM14.46 4.90039C13.71 4.15041 12.7305 4.15041 11.9805 4.90039L9.5 7.38086V16.5703L16.5801 9.5C17.34 8.74004 17.34 7.79049 16.5801 7.02051L14.46 4.90039Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>The Emigre type foundry was legendary. And their magazine was captivating for designers in the 90s. All 69 issues have been published digitally. They’re available in the <a href="https://oa.letterformarchive.org/?dims=Collection&amp;vals0=Emigre%20Collection&amp;sortby=collection">Letterform Archive</a> and in Emigre’s own <a href="https://www.emigre.com/Emigre-Fonts-App">macOS/iOS app</a>. The Emigre app also includes their type specimen books.</p>
		<p>Modals can be a usability/accessibility nightmare. But they don’t have to be. Smashing Magazine has a great <a href="https://www.smashingmagazine.com/2026/03/modal-separate-page-ux-decision-tree">write-up</a> with a decision tree to help you decide if you actually need one.</p>
	</section>
	<section>
		
	<h2>Code bytes
		<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M10.75 0C16.68 0 21.5 4.82 21.5 10.75C21.5 16.68 16.68 21.5 10.75 21.5C4.82 21.5 0 16.68 0 10.75C0 4.82 4.82 0 10.75 0ZM10.75 1.5C5.65 1.5 1.5 5.65 1.5 10.75C1.5 15.85 5.65 20 10.75 20C15.85 20 20 15.85 20 10.75C20 5.65 15.85 1.5 10.75 1.5ZM11.0703 8.11035C11.2303 7.73048 11.6699 7.55001 12.0498 7.71973C12.4297 7.8797 12.6103 8.32001 12.4404 8.70996L10.4404 13.3799C10.3204 13.6599 10.04 13.8301 9.75 13.8301C9.65005 13.8301 9.54992 13.8105 9.45996 13.7705C9.07999 13.6105 8.90038 13.1703 9.07031 12.7803L11.0703 8.11035ZM6.21973 8.21973C6.50973 7.92973 6.99027 7.92973 7.28027 8.21973C7.5702 8.50972 7.57022 8.99029 7.28027 9.28027L5.80957 10.75L7.28027 12.2197C7.5702 12.5097 7.57022 12.9903 7.28027 13.2803C7.13029 13.4303 6.93998 13.5 6.75 13.5C6.56001 13.5 6.36972 13.4303 6.21973 13.2803L4.21973 11.2803C3.92973 10.9903 3.92973 10.5097 4.21973 10.2197L6.21973 8.21973ZM14.2197 8.21973C14.5097 7.92973 14.9903 7.92973 15.2803 8.21973L17.2803 10.2197C17.5702 10.5097 17.5702 10.9903 17.2803 11.2803L15.2803 13.2803C15.1303 13.4303 14.94 13.5 14.75 13.5C14.56 13.5 14.3697 13.4303 14.2197 13.2803C13.9297 12.9903 13.9297 12.5097 14.2197 12.2197L15.6904 10.75L14.2197 9.28027C13.9297 8.99027 13.9297 8.50973 14.2197 8.21973Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>On my <a href="https://markwyner.com/">website</a>, I built transition animations when navigating between pages. It’s a bit of a lift to make it work with/without JavaScript and keep things accessible. But it works well. Soon (come on, Firefox!) we’ll be able to use <code>@view-transition</code> <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/At-rules/@view-transition">rules</a> to create transitions between pages while updating the DOM in a single step.</p>
	</section>
	<section>
		
	<h2>Tools and platforms
		<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M15.7402 20C16.1502 20 16.4902 20.34 16.4902 20.75C16.4902 21.16 16.1502 21.5 15.7402 21.5H5.74023C5.33023 21.5 4.99023 21.16 4.99023 20.75C4.99023 20.34 5.33023 20 5.74023 20H15.7402ZM15.4805 0C16.2602 1.17267e-05 16.8302 0.0296231 17.3301 0.0996094C20.81 0.479611 21.4902 2.55992 21.4902 6.00977V12.3301C21.4902 15.78 20.8095 17.8602 17.3096 18.2402C16.8398 18.3102 16.27 18.3398 15.4805 18.3398H6.00977C5.21999 18.3398 4.65006 18.3102 4.16016 18.2402C0.690177 17.8602 8.13835e-06 15.78 0 12.3301V6.00977C3.20806e-05 2.56 0.680012 0.47968 4.17969 0.0996094C4.65964 0.0296167 5.22989 6.25456e-06 6.00977 0H15.4805ZM6 1.5C5.29021 1.5 4.78028 1.52988 4.36035 1.58984C2.20035 1.82984 1.49023 2.50051 1.49023 6.02051V12.3398C1.49023 15.8497 2.19999 16.5297 4.33984 16.7598C4.77979 16.8198 5.28989 16.8496 6.00977 16.8496H15.4805C16.2002 16.8496 16.7002 16.8198 17.1201 16.7598C19.28 16.5198 19.9902 15.85 19.9902 12.3301V6.00977C19.9902 2.49998 19.2796 1.81984 17.1396 1.58984C16.6897 1.52988 16.1895 1.5 15.4697 1.5H6ZM16 12.1104C16.41 12.1104 16.75 12.4504 16.75 12.8604C16.7498 13.2702 16.4199 13.6104 16 13.6104H5.49023C5.08046 13.6102 4.73068 13.2701 4.73047 12.8604C4.73047 12.4504 5.0607 12.1104 5.4707 12.1104H16ZM5.60059 6.07031C6.15047 6.07045 6.60059 6.5204 6.60059 7.07031C6.60045 7.62004 6.14052 8.07005 5.59082 8.07031C5.0409 8.07031 4.59095 7.6202 4.59082 7.07031C4.59082 6.52031 5.03082 6.07031 5.59082 6.07031H5.60059ZM8.74023 6.07031C9.29023 6.07031 9.74023 6.52031 9.74023 7.07031C9.7401 7.6202 9.30015 8.07031 8.74023 8.07031C8.19032 8.07031 7.74037 7.6202 7.74023 7.07031C7.74023 6.52031 8.18023 6.07031 8.74023 6.07031ZM16 6.32031C16.41 6.32031 16.75 6.66031 16.75 7.07031C16.7499 7.4802 16.4199 7.82031 16 7.82031H12.3203C11.9104 7.82031 11.5704 7.4802 11.5703 7.07031C11.5703 6.66031 11.9103 6.32031 12.3203 6.32031H16Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>While having coffee with <a href="https://indieweb.social/@jaredwhite">Jared</a>, I learned about <a href="https://www.bridgetownrb.com/">Bridgetown</a>. I’m considering porting my writing site to it from Jekyll. It looks rock solid and super flexible.</p>
		<p>I’m loving <a href="https://syncthing.net/">Synthing</a>. It has been integral in working between my macOS and Linux machines. I recommend it.</p>
	</section>
</div>
<h2>At the moment</h2>
<p>I’m <em>really</em> trying to focus on my ham radio license test. It’s so hard, but I’m doing my best. I’ve been listening to a lot of 80s/90s death metal, but also DJ Krush’s new record. More on my <a href="https://markwyner.omg.lol/now">now page</a>.</p>]]></content><author><name></name></author><category term="nano-bytes" /><summary type="html"><![CDATA[Photo by Mark Wyner The curated list of things that bring me joy. Plus bytes on design, code, accessibility, privacy, and tools you might find useful. Available via RSS and email. This volume’s goodies…]]></summary></entry><entry><title type="html">If Your Company Funnels Money to Fascists, You’re a Fascist Company</title><link href="https://markwrites.io/if-your-company-funnels-money-to-fascists-youre-a-fascist-company/" rel="alternate" type="text/html" title="If Your Company Funnels Money to Fascists, You’re a Fascist Company" /><published>2026-06-28T00:00:00+00:00</published><updated>2026-06-28T00:00:00+00:00</updated><id>https://markwrites.io/if-your-company-funnels-money-to-fascists-youre-a-fascist-company</id><content type="html" xml:base="https://markwrites.io/if-your-company-funnels-money-to-fascists-youre-a-fascist-company/"><![CDATA[<p><img src="/images/articles/mullvad/hero.jpg" alt="Weathered antifascist stickers on a post. The featured sticker reads “siamo tutti antifascisti.”" /></p>

<p>Today I read something about one of Mullvad’s founders, Daniel Berntsson, <a href="https://www.flamman.se/techprofil-ger-miljoner-till-orebropartiet/">donating</a> to a fascist party in Sweden. Because I have been championing for Mullvad for a long time, I thought I’d do some research of my own. Here’s what I learned.</p>

<!--more-->

<ol>
  <li>Daniel did indeed donate to the Örebro Party. In fact, his donation was 72% of their total 2025 income.</li>
  <li><em>Lots</em> of people on Mastodon called them out. They replied to most if not all of those posts with this <a href="https://mastodon.online/@mullvadnet">same message</a>.</li>
  <li>The Örebro Party indeed supports racist, xenophobic <a href="https://en.wikipedia.org/wiki/%C3%96rebro_Party">ideologies and policies</a> (while pretending to be a left-leaning/socialist party).</li>
</ol>

<p>Mullvad’s canned response that they posted countless times:</p>

<blockquote>
  <p>Mullvad is a political company fighting for free speech, free information and privacy, with two equal co-founders, co-owners and co-CEOs who fundamentally disagree on many issues. Daniel’s donation to a political party is private and not part of Mullvad’s mission. We protect the right to express and access views we disagree with. We welcome anyone sharing these core values, whatever their other opinions. We are happy to refund others who don’t, where we can.</p>
</blockquote>

<p>The key part to call out is their insistence that they are a company comprising “two equal co-founders, co-owners and co-CEOs who fundamentally disagree on many issues.” And that his donation is “private and not part of Mullvad’s mission.”</p>

<p>The problem with this is that fascism promotes violence against others. Many privacy advocates claim “free speech” should be protected, even when it’s hate speech. Including Mullvad, who notes this in their response. They’re all-in on privacy-first.</p>

<p>But hate speech isn’t free speech. It demands violence against marginalized people. There is no “both sides” to it. It’s not okay to “fundamentally disagree” on it. If you are a company who earns income, and that income is funneled to a fascist political party, it is absolutely part of your mission. Even if it’s turning a blind eye to a teammate with whom you disagree.</p>

<h2 id="örebro-party-policies">Örebro party policies</h2>

<p>You can read about the fascist policies of the party on their website (which I’m not linking to, because they don’t deserve our traffic) or <a href="https://en.wikipedia.org/wiki/%C3%96rebro_Party">on Wikipedia</a>. But here are the key problem areas.</p>

<ol>
  <li>Remigration is the crown jewel of their platform. They actively campaign to deport all people their founder Markus Allard says are not Swedish.“They will also be forced to leave, <strong>even if they are born in Sweden</strong>, because they have no natural connection to Sweden. They are not Swedish.”</li>
  <li>They work to unite “productive” classes of society against people who “suck money out of the state” by receiving welfare help or work in “made-up services.” They even coined a term for it because it means so much to them, which I’m not repeating here. Allard claims most of these people are immigrants and that they are responsible for most violent crime. This is, of course, a favorite trope among fascists.</li>
  <li>Even beyond fascism, they are proponents of international violence by means of war. But not just any war. War against countries who are protected by NATO, typically because they have resources that support dreams of totalitarianism and world domination. Markus claims that Sweden “cannot trust or rely on NATO and that the country should instead seek to massively increase its weapons production and also become a major arms exporter.”</li>
</ol>

<h2 id="my-takeaway-on-this">My takeaway on this</h2>

<p>I’ve been a vocal supporter of Mullvad for a long time. Especially because they have one of the most reputable VPN services around. And because I <em>thought</em> that their leadership was unlike Proton’s CEO, Andy Yen, who is a notorious fascist boot-licker, citing his support for America’s current fascist totalitarian. So it’s heart-breaking to learn that Daniel Berntsson is taking Mullvad down the same path.</p>

<p>As seen, Mullvad is offering refunds to folks who want them. This is telling. They are doubling down in support of funneling money to fascists. My money will no longer be party to that. I will be requesting my refund and moving to a new VPN.</p>

<p>Why can’t we have anything nice?</p>]]></content><author><name></name></author><category term="being-human" /><summary type="html"><![CDATA[Today I read something about one of Mullvad’s founders, Daniel Berntsson, donating to a fascist party in Sweden. Because I have been championing for Mullvad for a long time, I thought I’d do some research of my own. Here’s what I learned.]]></summary></entry><entry><title type="html">Nano Bytes, Vol. 05</title><link href="https://markwrites.io/nano-bytes-05/" rel="alternate" type="text/html" title="Nano Bytes, Vol. 05" /><published>2026-06-07T00:00:00+00:00</published><updated>2026-06-07T00:00:00+00:00</updated><id>https://markwrites.io/nano-bytes-05</id><content type="html" xml:base="https://markwrites.io/nano-bytes-05/"><![CDATA[<figure>
	<img src="/images/nano-bytes/byte-poster-05.jpg" alt="A metal garage door with “no parking” painted on it, in a tall thing typeface. It has been muddied with graffiti and a splatter projectile, which has been partially cleaned off." />
	<figcaption>Photo by <a href="https://markwyner.some.pics/69b657a50ec1f">Mark Wyner</a></figcaption>
</figure>

<p>The curated list of things that bring me joy. Plus bytes on design, code, accessibility, privacy, and tools you might find useful. Available via <a href="/newsletter/">RSS and email</a>. This volume’s goodies…</p>

<!--more-->

<div class="byte-block">
	<section>
		
	<h2>The more you know
		<svg width="19" height="22" viewBox="0 0 19 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M12.75 0C17.16 0 18.5 1.34 18.5 5.75V17.25C18.5 19.59 16.59 21.5 14.25 21.5H4.25C1.91 21.5 0 19.59 0 17.25V5.75C0 1.34 1.34 0 5.75 0H12.75ZM3.59961 14.5C2.43992 14.5002 1.50021 15.4399 1.5 16.5996V17.25C1.5 18.77 2.73 20 4.25 20H14.25C15.77 20 17 18.77 17 17.25V16.291C16.9908 16.2355 16.986 16.1785 16.9902 16.1201C17.0002 16.0001 17 15.87 17 15.75V14.5H3.59961ZM5.75 1.5C2.17 1.5 1.5 2.18 1.5 5.75V13.6787C2.09207 13.252 2.81751 13.0001 3.59961 13H17V5.75C17 2.18 16.33 1.5 12.75 1.5H5.75ZM10.25 8.5C10.66 8.5 11 8.84 11 9.25C11 9.66 10.66 10 10.25 10H5.25C4.84 10 4.5 9.66 4.5 9.25C4.5 8.84 4.84 8.5 5.25 8.5H10.25ZM13.25 5C13.66 5 14 5.34 14 5.75C14 6.16 13.66 6.5 13.25 6.5H5.25C4.84 6.5 4.5 6.16 4.5 5.75C4.5 5.34 4.84 5 5.25 5H13.25Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>Before the 1880s brought us the <a href="https://en.wikipedia.org/wiki/Linotype_machine">Linotype machine</a>, people set type by hand. The fastest human typesetters (compositors) were called “swifts.” And the fastest of them all was known as the “<a href="https://publicdomainreview.org/essay/twilight-of-the-velocipede/">Velocipede</a>.” His name was George Arensberg.</p>
	</section>
	<section>
		
	<h2>Tickle me pink
		<svg width="22" height="20" viewBox="0 0 22 20" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M10.75 19.3C10.44 19.3 10.14 19.26 9.89 19.17C6.07 17.86 0 13.21 0 6.34C0 2.84 2.83 0 6.31 0C8 0 9.58 0.66 10.75 1.84C11.92 0.66 13.5 0 15.19 0C18.67 0 21.5 2.85 21.5 6.34C21.5 13.22 15.43 17.86 11.61 19.17C11.36 19.26 11.06 19.3 10.75 19.3ZM6.31 1.5C3.66 1.5 1.5 3.67 1.5 6.34C1.5 13.17 8.07 16.97 10.38 17.76C10.56 17.82 10.95 17.82 11.13 17.76C13.43 16.97 20.01 13.18 20.01 6.34C20.01 3.67 17.85 1.5 15.2 1.5C13.68 1.5 12.27 2.21 11.36 3.44C11.08 3.82 10.44 3.82 10.16 3.44C9.23 2.2 7.83 1.5 6.31 1.5Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>The work of artist <a href="https://www.habibhajallie.com/">Habib Hajallie</a> is intriguing. His style is one of my favorites: blending images with text. But it’s more than that. He strives “to rectify the historic lack of visibility of figures from ethnic minority backgrounds.”</p>
		<p>My neighbors over at Discogs published a collection called <em><a href="https://www.discogs.com/digs/music/essential-death-metal-records">The Albums That Invented Death Metal</a></em>. Usually when I see a title like this, I’m skeptical that the list will have any merit. But as I scanned it, I realized it was a virtual snapshot of one of my cassette boxes from high school. It’s a fire list.</p>
	</section>
	<section>
		
	<h2>Design bytes
		<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M6.25 0C8.15992 0 9.49989 1.34013 9.5 3.25V5.25L10.9199 3.83008C12.2299 2.52008 14.2105 2.52008 15.5205 3.83008L17.6406 5.9502C18.9903 7.30006 18.9902 9.1999 17.6406 10.5498L16.1885 12H18.2402C20.1502 12 21.4901 13.3401 21.4902 15.25V18.25C21.4902 20.15 20.1502 21.4902 18.2402 21.4902H4.74023L4.51172 21.4844C4.28011 21.4731 4.03986 21.4454 3.7998 21.4004C3.6299 21.3604 3.48001 21.3203 3.33008 21.2803C3.16008 21.2303 2.99961 21.1704 2.84961 21.1104C2.80978 21.1003 2.77991 21.0803 2.75 21.0703C2.6194 21.0031 2.49663 20.9344 2.37891 20.8662C2.33278 20.8399 2.28639 20.814 2.24121 20.7861C2.09591 20.6973 1.95941 20.6065 1.83008 20.5107C1.81021 20.5008 1.8 20.4808 1.78027 20.4707C1.63027 20.3507 1.49035 20.2298 1.36035 20.0898C1.22037 19.9399 1.11976 19.8202 1.00977 19.7002C0.779814 19.4002 0.589895 19.0999 0.419922 18.75C0.400064 18.7201 0.389833 18.6804 0.379883 18.6406C0.322738 18.5073 0.275333 18.3734 0.236328 18.2314C0.227722 18.2044 0.218056 18.1776 0.209961 18.1504C0.201775 18.1231 0.195501 18.0956 0.19043 18.0684C0.151897 17.9315 0.122328 17.8236 0.0996094 17.71C0.0296593 17.3601 0 17.0499 0 16.75V3.25C0.000114183 1.34013 1.34008 0 3.25 0H6.25ZM8.28418 19.9062C8.25863 19.9346 8.23236 19.9624 8.20605 19.9902H18.2402C19.3202 19.9902 19.9902 19.3202 19.9902 18.2402V15.2402C19.9902 14.1602 19.3202 13.4902 18.2402 13.4902H14.71L8.28418 19.9062ZM3.24023 1.5C2.16032 1.5 1.49034 2.17014 1.49023 3.25V16.7402C1.49023 16.9502 1.50957 17.1704 1.55957 17.4004C1.5751 17.4703 1.59624 17.5523 1.61914 17.6416C1.62923 17.6643 1.64237 17.6859 1.65039 17.71C1.78765 18.1475 2.01328 18.5448 2.30664 18.8809C2.31935 18.8951 2.3326 18.9092 2.3457 18.9238C2.50219 19.0968 2.67703 19.2525 2.86719 19.3887C2.98595 19.4716 3.11452 19.5517 3.25879 19.6299C3.29412 19.6483 3.33012 19.6655 3.36621 19.6826C3.37401 19.6847 3.38185 19.6866 3.38965 19.6904C3.4003 19.6958 3.41433 19.7034 3.43066 19.7129C3.4696 19.7304 3.50909 19.7467 3.54883 19.7627C3.62627 19.7906 3.70284 19.8166 3.78027 19.8398C3.89022 19.8698 4.0004 19.9007 4.11035 19.9307C4.66018 20.0306 5.24987 19.9998 5.71973 19.8398C5.78973 19.8098 5.89047 19.7802 5.98047 19.7402C6.30018 19.6103 6.56019 19.4506 6.79004 19.2607C6.87197 19.1952 6.93305 19.1351 6.99121 19.083C7.01204 19.0543 7.03512 19.0263 7.06055 19C7.66033 18.3901 7.99016 17.5802 7.99023 16.7305V3.25C7.99013 2.17022 7.32001 1.5001 6.24023 1.5H3.24023ZM4.74023 14.9902C5.70023 14.9902 6.49023 15.7802 6.49023 16.7402C6.49023 17.7002 5.70023 18.4902 4.74023 18.4902C3.78023 18.4902 2.99023 17.7002 2.99023 16.7402C2.99023 15.7802 3.78023 14.9902 4.74023 14.9902ZM4.74023 16.4902C4.60023 16.4902 4.49023 16.6002 4.49023 16.7402C4.49023 17.0202 4.99023 17.0202 4.99023 16.7402C4.99023 16.6002 4.88023 16.4902 4.74023 16.4902ZM14.46 4.90039C13.71 4.15041 12.7305 4.15041 11.9805 4.90039L9.5 7.38086V16.5703L16.5801 9.5C17.34 8.74004 17.34 7.79049 16.5801 7.02051L14.46 4.90039Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>Designer/developer <a href="https://art.saneef.com">Saneef Ansari</a> has created some cool art that you can modify with your own variations. It’s a neat idea, and done well. But it’s human coded. <strong>No AI</strong>.</p>
		<p>Now, here’s an absolute gem. I found this website for an annual <a href="https://debestverzorgdeboeken.nl/en/books">Dutch book design competition</a>. I got lost in the archives. If you like typography-focused design, Swiss design, mid-century modern, brutalist, and anything along those lines, you’ll love their collection.</p>
	</section>
	<section>
		
	<h2>Code bytes
		<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M10.75 0C16.68 0 21.5 4.82 21.5 10.75C21.5 16.68 16.68 21.5 10.75 21.5C4.82 21.5 0 16.68 0 10.75C0 4.82 4.82 0 10.75 0ZM10.75 1.5C5.65 1.5 1.5 5.65 1.5 10.75C1.5 15.85 5.65 20 10.75 20C15.85 20 20 15.85 20 10.75C20 5.65 15.85 1.5 10.75 1.5ZM11.0703 8.11035C11.2303 7.73048 11.6699 7.55001 12.0498 7.71973C12.4297 7.8797 12.6103 8.32001 12.4404 8.70996L10.4404 13.3799C10.3204 13.6599 10.04 13.8301 9.75 13.8301C9.65005 13.8301 9.54992 13.8105 9.45996 13.7705C9.07999 13.6105 8.90038 13.1703 9.07031 12.7803L11.0703 8.11035ZM6.21973 8.21973C6.50973 7.92973 6.99027 7.92973 7.28027 8.21973C7.5702 8.50972 7.57022 8.99029 7.28027 9.28027L5.80957 10.75L7.28027 12.2197C7.5702 12.5097 7.57022 12.9903 7.28027 13.2803C7.13029 13.4303 6.93998 13.5 6.75 13.5C6.56001 13.5 6.36972 13.4303 6.21973 13.2803L4.21973 11.2803C3.92973 10.9903 3.92973 10.5097 4.21973 10.2197L6.21973 8.21973ZM14.2197 8.21973C14.5097 7.92973 14.9903 7.92973 15.2803 8.21973L17.2803 10.2197C17.5702 10.5097 17.5702 10.9903 17.2803 11.2803L15.2803 13.2803C15.1303 13.4303 14.94 13.5 14.75 13.5C14.56 13.5 14.3697 13.4303 14.2197 13.2803C13.9297 12.9903 13.9297 12.5097 14.2197 12.2197L15.6904 10.75L14.2197 9.28027C13.9297 8.99027 13.9297 8.50973 14.2197 8.21973Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>I’ve been working on a lot of UI animation lately. If you’re doing the same, I recommend learning the <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/At-rules/@starting-style">@starting-style</a> at-rule. In short, they enable you to declare an animation start-state for an element when it doesn’t have one.</p>
	</section>
	<section>
		
	<h2>Accessibility insights
		<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M10.75 0C16.68 0 21.5 4.82 21.5 10.75C21.5 16.68 16.68 21.5 10.75 21.5C4.82 21.5 0 16.68 0 10.75C0 4.82 4.82 0 10.75 0ZM10.75 1.5C5.65 1.5 1.5 5.65 1.5 10.75C1.5 15.85 5.65 20 10.75 20C15.85 20 20 15.85 20 10.75C20 5.65 15.85 1.5 10.75 1.5ZM15.0879 6.84863C15.4991 6.73933 15.9647 6.98532 16.0742 7.39648C16.1835 7.80767 15.9375 8.27334 15.5264 8.38281L12.1582 9.39551C11.9936 9.45065 11.8839 9.61535 11.8838 9.80664C11.9105 10.3548 11.9657 11.5325 12.0752 11.9707C12.3477 13.2227 13.8371 16.6396 13.8555 16.6816C14.0469 17.0929 13.8829 17.5586 13.4717 17.75C13.3622 17.8043 13.253 17.832 13.1436 17.832C12.8427 17.832 12.5678 17.6687 12.4307 17.3945L10.8975 14.0801L9.28027 17.3662C9.17063 17.6668 8.86911 17.8311 8.56836 17.8311C8.45889 17.831 8.34969 17.8042 8.24023 17.749C7.85664 17.5577 7.66524 17.0928 7.85645 16.6816C7.85645 16.6816 9.36256 13.2294 9.63672 11.9697C9.74616 11.5307 9.80055 10.353 9.82812 9.80566C9.85462 9.61358 9.71826 9.44966 9.55371 9.39453L6.18555 8.38184C5.74754 8.27234 5.50061 7.80617 5.6377 7.36816C5.7741 6.95716 6.24023 6.76553 6.65137 6.875C6.67932 6.8839 9.75066 7.86113 10.8418 7.86133C11.9644 7.86133 15.0879 6.84863 15.0879 6.84863ZM10.8975 4C11.7442 4.00004 12.4316 4.68744 12.4316 5.53418C12.4315 6.38158 11.7441 7.06734 10.8975 7.06738C10.0508 7.06738 9.36346 6.38162 9.36328 5.53418C9.36328 4.68744 10.0507 4 10.8975 4Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>The primary catalyst for my Bytes negligence was my being super-busy with my recent accessibility talk, <em>Alt Text is the Ocean You Thought Was a Pond</em>. I delivered the lecture in a Portland library for the <a href="https://pdxa11yux.org/events/2026/05/27/alt-text-is-the-ocean-you-thought-was-a-pond.html">PDX A11y UX Meetup</a>.</p>
		<p>I arrived to discover that there was no formal plan for recording it. But I was able to get creative last minute and capture it with Screenshot and Quicktime on my MacBook. I used it to publish a <a href="https://vid.northbound.online/w/m3RR6smxoSyXJSqTMia4Ue">simple video</a> of the talk and a click-through of <a href="https://lectures.markwyner.com/alt-text">the slides</a>.</p>
	</section>
	<section>
		
	<h2>Privacy lockdown
		<svg width="19" height="22" viewBox="0 0 19 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M7.57031 0.277485C8.56029 -0.092505 10.1203 -0.0924849 11.1104 0.277485L16.1006 2.1476C17.5505 2.68766 18.6806 4.3274 18.6807 5.86733V13.297C18.6807 14.717 17.7903 16.487 16.6504 17.3371L12.3506 20.547C11.5206 21.187 10.4406 21.507 9.35059 21.507C8.26059 21.507 7.18008 21.1878 6.33008 20.5578L2.03027 17.3478C0.890379 16.4979 0.000165441 14.7177 0 13.3078V5.86733C1.73148e-05 4.32749 1.1303 2.68777 2.58008 2.1476L7.57031 0.277485ZM10.6104 1.6769C9.93031 1.43699 8.7705 1.43767 8.10059 1.68764L3.11035 3.55776C2.26054 3.87784 1.51089 4.95724 1.51074 5.87709V13.3078C1.51093 14.2577 2.18077 15.5877 2.93066 16.1476L7.23047 19.3576C8.38044 20.2175 10.3205 20.2175 11.4805 19.3576L15.7803 16.1476C16.5402 15.5777 17.2 14.2577 17.2002 13.3078V5.86733C17.2002 4.95734 16.4506 3.87701 15.6006 3.54702L10.6104 1.6769ZM11.7803 7.3976C12.0703 7.1076 12.5508 7.1076 12.8408 7.3976C13.1305 7.68756 13.1305 8.16723 12.8408 8.45717L8.54102 12.757C8.39106 12.9069 8.20069 12.9776 8.01074 12.9777C7.82074 12.9777 7.63047 12.907 7.48047 12.757L5.87012 11.1476C5.58025 10.8576 5.58023 10.377 5.87012 10.0871C6.16008 9.79709 6.64065 9.79716 6.93066 10.0871L8.01074 11.1671L11.7803 7.3976Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>The long-awaited E2EE of RCS messaging <a href="https://www.apple.com/newsroom/2026/05/end-to-end-encrypted-rcs-messaging-begins-rolling-out-today-in-beta/">shipped with iOS 26.5</a> (for some carriers). This means encryption between iPhones and Android devices will be as secure as iPhone-to-iPhone.</p>
		<p>Hopefully you’re not using Google. Especially Google Family. Especially really not Google Family Link. If you do, know that hackers <a href="https://techwolf12.nl/blog/google-family-link-exploit/">found an exploit</a> that can lock you and your family out of your account.</p>
	</section>
	<section>
		
	<h2>Antifascism
		<svg width="20" height="22" viewBox="0 0 20 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M15.7787 4.07193H15.5392V3.23539C15.5392 1.98469 14.5214 0.965987 13.2698 0.965987C12.6818 0.965987 12.1454 1.1907 11.7419 1.55894C11.3794 0.786371 10.5954 0.25 9.68664 0.25C8.77792 0.25 7.99388 0.78719 7.63056 1.55976C7.22705 1.19152 6.69067 0.966806 6.10265 0.966806C4.85114 0.966806 3.83325 1.9846 3.83325 3.23621V3.29854C3.46256 3.03364 3.00901 2.87781 2.5194 2.87781C1.26788 2.87781 0.25 3.8956 0.25 5.14721V12.3144C0.25 17.5173 4.48269 21.75 9.68641 21.75C14.8901 21.75 19.1228 17.5173 19.1228 12.3144V7.41745C19.1228 5.57295 17.622 4.07203 15.7782 4.07203L15.7787 4.07193ZM13.2699 1.92241C13.9941 1.92241 14.5838 2.51127 14.5838 3.23627V4.07199H11.956V3.23545C11.956 2.51127 12.5458 1.92241 13.2699 1.92241ZM8.37296 2.51948C8.37296 1.79531 8.96182 1.20563 9.68681 1.20563C10.4118 1.20563 11.0007 1.79449 11.0007 2.51948V4.07199C10.3421 4.07199 9.80573 4.60836 9.80573 5.26693C9.80573 6.29128 10.2691 7.20983 10.9974 7.82418C10.972 8.52622 10.3938 9.08964 9.68599 9.08964C8.96182 9.08964 8.37214 8.50078 8.37214 7.77578L8.37296 2.51948ZM4.78987 3.23547C4.78987 2.5113 5.37873 1.92162 6.10372 1.92162C6.8279 1.92162 7.41758 2.51048 7.41758 3.23547L7.4184 7.7749C7.4184 8.49908 6.82954 9.08875 6.10454 9.08875C5.38037 9.08875 4.79069 8.49989 4.79069 7.7749L4.78987 3.23547ZM1.20678 5.14721C1.20678 4.42304 1.79564 3.83336 2.52064 3.83336C3.24563 3.83336 3.83531 4.42222 3.83531 5.14721V7.775C3.83531 8.49918 3.24645 9.08886 2.52146 9.08886C1.79728 9.08886 1.2076 8.5 1.2076 7.775L1.20678 5.14721ZM18.1671 12.3136C18.1671 16.9899 14.3634 20.7939 9.68685 20.7939C5.01032 20.7939 1.20657 16.9901 1.20657 12.3136V9.62366C1.57727 9.88856 2.03081 10.0444 2.52043 10.0444C3.24788 10.0444 3.89662 9.69993 4.31243 9.1652C4.72825 9.69911 5.37697 10.0444 6.10444 10.0444C6.83191 10.0444 7.48063 9.69993 7.89644 9.1652C8.31226 9.69911 8.96098 10.0444 9.68845 10.0444C10.7382 10.0444 11.6223 9.3284 11.8814 8.35901C12.2735 8.52058 12.7024 8.60997 13.1526 8.60997H14.5854V9.82294C11.3836 10.0674 8.8526 12.7516 8.8526 16.0158C8.8526 16.2798 9.06665 16.4931 9.32991 16.4931C9.59399 16.4931 9.80722 16.279 9.80722 16.0158C9.80722 13.1182 12.165 10.7604 15.0626 10.7604C15.3267 10.7604 15.5399 10.5463 15.5399 10.2831V8.13357C15.5399 7.86948 15.3259 7.65626 15.0626 7.65626H13.1509C11.8337 7.65626 10.7618 6.58433 10.7618 5.26718C10.7618 5.13514 10.8684 5.02771 11.0013 5.02771H15.7786C17.0957 5.02771 18.1676 6.09963 18.1676 7.41678L18.1671 12.3136Z" fill="currentColor" stroke="currentColor" stroke-width="0.5" />
		</svg>
	</h2>
	
		<p>“Here’s my question back to those who only got uncomfortable with violence during the unrest of the protests: If you aren’t comfortable now, why were you comfortable before?…is it violence what you’re uncomfortable with? Or are you just asking other people to take your punches for you?” A.R. Moxon, slaying as always, with his piece <em><a href="https://www.the-reframe.com/are-you-brave-enough-for-nonviolence/">Are You Brave Enough for Nonviolence?</a></em></p>
	</section>
</div>
<h2>At the moment</h2>
<p>I’m authoring on a companion article for my accessibility talk. I’m also working overtime on building new components for a design system.  More on my <a href="https://markwyner.omg.lol/now">now page</a>.</p>]]></content><author><name></name></author><category term="nano-bytes" /><summary type="html"><![CDATA[Photo by Mark Wyner The curated list of things that bring me joy. Plus bytes on design, code, accessibility, privacy, and tools you might find useful. Available via RSS and email. This volume’s goodies…]]></summary></entry><entry><title type="html">Nano Bytes, Vol. 04</title><link href="https://markwrites.io/nano-bytes-04/" rel="alternate" type="text/html" title="Nano Bytes, Vol. 04" /><published>2026-05-11T00:00:00+00:00</published><updated>2026-05-11T00:00:00+00:00</updated><id>https://markwrites.io/nano-bytes-04</id><content type="html" xml:base="https://markwrites.io/nano-bytes-04/"><![CDATA[<figure>
	<img src="/images/nano-bytes/byte-poster-04.jpg" alt="Perspective view of the corner of a smooth, light-colored brick building. A weathered street name “south stone avenue” is painted across a row of bricks with simple lettering. The cross-street name is scarcely readable on the adjacent wall." />
	<figcaption>Photo by <a href="https://markwyner.some.pics/6a0171e71f1a6">Mark Wyner</a></figcaption>
</figure>

<p>The weekly curated list of things that bring me joy. Plus bytes on design, code, accessibility, privacy, and tools you might find useful. Available via <a href="/newsletter/">RSS and email</a>. This week’s goodies…</p>

<!--more-->

<div class="byte-block">
	<section>
		
	<h2>The more you know
		<svg width="19" height="22" viewBox="0 0 19 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M12.75 0C17.16 0 18.5 1.34 18.5 5.75V17.25C18.5 19.59 16.59 21.5 14.25 21.5H4.25C1.91 21.5 0 19.59 0 17.25V5.75C0 1.34 1.34 0 5.75 0H12.75ZM3.59961 14.5C2.43992 14.5002 1.50021 15.4399 1.5 16.5996V17.25C1.5 18.77 2.73 20 4.25 20H14.25C15.77 20 17 18.77 17 17.25V16.291C16.9908 16.2355 16.986 16.1785 16.9902 16.1201C17.0002 16.0001 17 15.87 17 15.75V14.5H3.59961ZM5.75 1.5C2.17 1.5 1.5 2.18 1.5 5.75V13.6787C2.09207 13.252 2.81751 13.0001 3.59961 13H17V5.75C17 2.18 16.33 1.5 12.75 1.5H5.75ZM10.25 8.5C10.66 8.5 11 8.84 11 9.25C11 9.66 10.66 10 10.25 10H5.25C4.84 10 4.5 9.66 4.5 9.25C4.5 8.84 4.84 8.5 5.25 8.5H10.25ZM13.25 5C13.66 5 14 5.34 14 5.75C14 6.16 13.66 6.5 13.25 6.5H5.25C4.84 6.5 4.5 6.16 4.5 5.75C4.5 5.34 4.84 5 5.25 5H13.25Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>Apparently there’s something called a “pyramid of capitalism system.” When PEOPLE published <a href="https://publicdomainreview.org/collection/pyramid-of-the-capitalist-system">this illustration</a> of the pyramid in 1911, it was probably shocking to lots of folks. Today it’s likely to look very familiar to non-billionaires.</p>
	</section>
	<section>
		
	<h2>Tickle me pink
		<svg width="22" height="20" viewBox="0 0 22 20" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M10.75 19.3C10.44 19.3 10.14 19.26 9.89 19.17C6.07 17.86 0 13.21 0 6.34C0 2.84 2.83 0 6.31 0C8 0 9.58 0.66 10.75 1.84C11.92 0.66 13.5 0 15.19 0C18.67 0 21.5 2.85 21.5 6.34C21.5 13.22 15.43 17.86 11.61 19.17C11.36 19.26 11.06 19.3 10.75 19.3ZM6.31 1.5C3.66 1.5 1.5 3.67 1.5 6.34C1.5 13.17 8.07 16.97 10.38 17.76C10.56 17.82 10.95 17.82 11.13 17.76C13.43 16.97 20.01 13.18 20.01 6.34C20.01 3.67 17.85 1.5 15.2 1.5C13.68 1.5 12.27 2.21 11.36 3.44C11.08 3.82 10.44 3.82 10.16 3.44C9.23 2.2 7.83 1.5 6.31 1.5Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>I’ve been enjoying the work of Polish photographer <a href="https://januszjurekphotography.myportfolio.com/start">Janusz Jurek</a>. A lot. I mean completely captivated by it. He captures people at the perfect moments. His compositions tell broad stories.</p>
		<p>Astronauts of Artemis II took a collection of photos during their lunar flyby. Back in April, NASA published a <a href="https://petapixel.com/2026/05/04/nasa-releases-thousands-of-unseen-artemis-ii-photos">big set</a> of them.</p>
		<p>Argentinian photographer Irina Werning has an ongoing series of images called “Las Pelilargas,” which translates to “the long-haired.” She notes that <a href="https://irinawerning.com/gallery/las-pelilargas-thumbs">the project</a> is “the culture of Latin America, where our ancestors believed that cutting hair was cutting life. That hair is the physical manifestation of our thoughts and our souls and our connection to the land.”</p>
	</section>
	<section>
		
	<h2>Design bytes
		<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M6.25 0C8.15992 0 9.49989 1.34013 9.5 3.25V5.25L10.9199 3.83008C12.2299 2.52008 14.2105 2.52008 15.5205 3.83008L17.6406 5.9502C18.9903 7.30006 18.9902 9.1999 17.6406 10.5498L16.1885 12H18.2402C20.1502 12 21.4901 13.3401 21.4902 15.25V18.25C21.4902 20.15 20.1502 21.4902 18.2402 21.4902H4.74023L4.51172 21.4844C4.28011 21.4731 4.03986 21.4454 3.7998 21.4004C3.6299 21.3604 3.48001 21.3203 3.33008 21.2803C3.16008 21.2303 2.99961 21.1704 2.84961 21.1104C2.80978 21.1003 2.77991 21.0803 2.75 21.0703C2.6194 21.0031 2.49663 20.9344 2.37891 20.8662C2.33278 20.8399 2.28639 20.814 2.24121 20.7861C2.09591 20.6973 1.95941 20.6065 1.83008 20.5107C1.81021 20.5008 1.8 20.4808 1.78027 20.4707C1.63027 20.3507 1.49035 20.2298 1.36035 20.0898C1.22037 19.9399 1.11976 19.8202 1.00977 19.7002C0.779814 19.4002 0.589895 19.0999 0.419922 18.75C0.400064 18.7201 0.389833 18.6804 0.379883 18.6406C0.322738 18.5073 0.275333 18.3734 0.236328 18.2314C0.227722 18.2044 0.218056 18.1776 0.209961 18.1504C0.201775 18.1231 0.195501 18.0956 0.19043 18.0684C0.151897 17.9315 0.122328 17.8236 0.0996094 17.71C0.0296593 17.3601 0 17.0499 0 16.75V3.25C0.000114183 1.34013 1.34008 0 3.25 0H6.25ZM8.28418 19.9062C8.25863 19.9346 8.23236 19.9624 8.20605 19.9902H18.2402C19.3202 19.9902 19.9902 19.3202 19.9902 18.2402V15.2402C19.9902 14.1602 19.3202 13.4902 18.2402 13.4902H14.71L8.28418 19.9062ZM3.24023 1.5C2.16032 1.5 1.49034 2.17014 1.49023 3.25V16.7402C1.49023 16.9502 1.50957 17.1704 1.55957 17.4004C1.5751 17.4703 1.59624 17.5523 1.61914 17.6416C1.62923 17.6643 1.64237 17.6859 1.65039 17.71C1.78765 18.1475 2.01328 18.5448 2.30664 18.8809C2.31935 18.8951 2.3326 18.9092 2.3457 18.9238C2.50219 19.0968 2.67703 19.2525 2.86719 19.3887C2.98595 19.4716 3.11452 19.5517 3.25879 19.6299C3.29412 19.6483 3.33012 19.6655 3.36621 19.6826C3.37401 19.6847 3.38185 19.6866 3.38965 19.6904C3.4003 19.6958 3.41433 19.7034 3.43066 19.7129C3.4696 19.7304 3.50909 19.7467 3.54883 19.7627C3.62627 19.7906 3.70284 19.8166 3.78027 19.8398C3.89022 19.8698 4.0004 19.9007 4.11035 19.9307C4.66018 20.0306 5.24987 19.9998 5.71973 19.8398C5.78973 19.8098 5.89047 19.7802 5.98047 19.7402C6.30018 19.6103 6.56019 19.4506 6.79004 19.2607C6.87197 19.1952 6.93305 19.1351 6.99121 19.083C7.01204 19.0543 7.03512 19.0263 7.06055 19C7.66033 18.3901 7.99016 17.5802 7.99023 16.7305V3.25C7.99013 2.17022 7.32001 1.5001 6.24023 1.5H3.24023ZM4.74023 14.9902C5.70023 14.9902 6.49023 15.7802 6.49023 16.7402C6.49023 17.7002 5.70023 18.4902 4.74023 18.4902C3.78023 18.4902 2.99023 17.7002 2.99023 16.7402C2.99023 15.7802 3.78023 14.9902 4.74023 14.9902ZM4.74023 16.4902C4.60023 16.4902 4.49023 16.6002 4.49023 16.7402C4.49023 17.0202 4.99023 17.0202 4.99023 16.7402C4.99023 16.6002 4.88023 16.4902 4.74023 16.4902ZM14.46 4.90039C13.71 4.15041 12.7305 4.15041 11.9805 4.90039L9.5 7.38086V16.5703L16.5801 9.5C17.34 8.74004 17.34 7.79049 16.5801 7.02051L14.46 4.90039Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>Developer David Aerne has designed and built what he calls <a href="https://charcuterie.elastiq.ch">Charcuterie</a>. It’s an explorer for unicode characters and glyphs. Beyond being super cool, it’s useful for exploration.</p>
	</section>
	<section>
		
	<h2>Code bytes
		<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M10.75 0C16.68 0 21.5 4.82 21.5 10.75C21.5 16.68 16.68 21.5 10.75 21.5C4.82 21.5 0 16.68 0 10.75C0 4.82 4.82 0 10.75 0ZM10.75 1.5C5.65 1.5 1.5 5.65 1.5 10.75C1.5 15.85 5.65 20 10.75 20C15.85 20 20 15.85 20 10.75C20 5.65 15.85 1.5 10.75 1.5ZM11.0703 8.11035C11.2303 7.73048 11.6699 7.55001 12.0498 7.71973C12.4297 7.8797 12.6103 8.32001 12.4404 8.70996L10.4404 13.3799C10.3204 13.6599 10.04 13.8301 9.75 13.8301C9.65005 13.8301 9.54992 13.8105 9.45996 13.7705C9.07999 13.6105 8.90038 13.1703 9.07031 12.7803L11.0703 8.11035ZM6.21973 8.21973C6.50973 7.92973 6.99027 7.92973 7.28027 8.21973C7.5702 8.50972 7.57022 8.99029 7.28027 9.28027L5.80957 10.75L7.28027 12.2197C7.5702 12.5097 7.57022 12.9903 7.28027 13.2803C7.13029 13.4303 6.93998 13.5 6.75 13.5C6.56001 13.5 6.36972 13.4303 6.21973 13.2803L4.21973 11.2803C3.92973 10.9903 3.92973 10.5097 4.21973 10.2197L6.21973 8.21973ZM14.2197 8.21973C14.5097 7.92973 14.9903 7.92973 15.2803 8.21973L17.2803 10.2197C17.5702 10.5097 17.5702 10.9903 17.2803 11.2803L15.2803 13.2803C15.1303 13.4303 14.94 13.5 14.75 13.5C14.56 13.5 14.3697 13.4303 14.2197 13.2803C13.9297 12.9903 13.9297 12.5097 14.2197 12.2197L15.6904 10.75L14.2197 9.28027C13.9297 8.99027 13.9297 8.50973 14.2197 8.21973Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>Developer Niki Tonsky has a new software versioning system for us. He calls it <a href="https://pridever.org/">pride versioning</a>. It’s based on the common system <a href="https://semver.org/">semantic versioning</a>. It’s noted as a parody. But I say we go ahead and use it.</p>
	</section>
	<section>
		
	<h2>Accessibility insights
		<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M10.75 0C16.68 0 21.5 4.82 21.5 10.75C21.5 16.68 16.68 21.5 10.75 21.5C4.82 21.5 0 16.68 0 10.75C0 4.82 4.82 0 10.75 0ZM10.75 1.5C5.65 1.5 1.5 5.65 1.5 10.75C1.5 15.85 5.65 20 10.75 20C15.85 20 20 15.85 20 10.75C20 5.65 15.85 1.5 10.75 1.5ZM15.0879 6.84863C15.4991 6.73933 15.9647 6.98532 16.0742 7.39648C16.1835 7.80767 15.9375 8.27334 15.5264 8.38281L12.1582 9.39551C11.9936 9.45065 11.8839 9.61535 11.8838 9.80664C11.9105 10.3548 11.9657 11.5325 12.0752 11.9707C12.3477 13.2227 13.8371 16.6396 13.8555 16.6816C14.0469 17.0929 13.8829 17.5586 13.4717 17.75C13.3622 17.8043 13.253 17.832 13.1436 17.832C12.8427 17.832 12.5678 17.6687 12.4307 17.3945L10.8975 14.0801L9.28027 17.3662C9.17063 17.6668 8.86911 17.8311 8.56836 17.8311C8.45889 17.831 8.34969 17.8042 8.24023 17.749C7.85664 17.5577 7.66524 17.0928 7.85645 16.6816C7.85645 16.6816 9.36256 13.2294 9.63672 11.9697C9.74616 11.5307 9.80055 10.353 9.82812 9.80566C9.85462 9.61358 9.71826 9.44966 9.55371 9.39453L6.18555 8.38184C5.74754 8.27234 5.50061 7.80617 5.6377 7.36816C5.7741 6.95716 6.24023 6.76553 6.65137 6.875C6.67932 6.8839 9.75066 7.86113 10.8418 7.86133C11.9644 7.86133 15.0879 6.84863 15.0879 6.84863ZM10.8975 4C11.7442 4.00004 12.4316 4.68744 12.4316 5.53418C12.4315 6.38158 11.7441 7.06734 10.8975 7.06738C10.0508 7.06738 9.36346 6.38162 9.36328 5.53418C9.36328 4.68744 10.0507 4 10.8975 4Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>Canada’s government has an IT Accessibility Office (ITAO). Yeah. And they have this self-paced online <a href="https://bati-itao.github.io/learning/esdc-self-paced-web-accessibility-course">accessibility course</a> that’s quite robust. Lots of details that cover the full spectrum of digital accessibility. If the W3C/WCAG documentation overwhelms you or makes you feel lost, ITAO has you covered.</p>
	</section>
	<section>
		
	<h2>Privacy lockdown
		<svg width="19" height="22" viewBox="0 0 19 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M7.57031 0.277485C8.56029 -0.092505 10.1203 -0.0924849 11.1104 0.277485L16.1006 2.1476C17.5505 2.68766 18.6806 4.3274 18.6807 5.86733V13.297C18.6807 14.717 17.7903 16.487 16.6504 17.3371L12.3506 20.547C11.5206 21.187 10.4406 21.507 9.35059 21.507C8.26059 21.507 7.18008 21.1878 6.33008 20.5578L2.03027 17.3478C0.890379 16.4979 0.000165441 14.7177 0 13.3078V5.86733C1.73148e-05 4.32749 1.1303 2.68777 2.58008 2.1476L7.57031 0.277485ZM10.6104 1.6769C9.93031 1.43699 8.7705 1.43767 8.10059 1.68764L3.11035 3.55776C2.26054 3.87784 1.51089 4.95724 1.51074 5.87709V13.3078C1.51093 14.2577 2.18077 15.5877 2.93066 16.1476L7.23047 19.3576C8.38044 20.2175 10.3205 20.2175 11.4805 19.3576L15.7803 16.1476C16.5402 15.5777 17.2 14.2577 17.2002 13.3078V5.86733C17.2002 4.95734 16.4506 3.87701 15.6006 3.54702L10.6104 1.6769ZM11.7803 7.3976C12.0703 7.1076 12.5508 7.1076 12.8408 7.3976C13.1305 7.68756 13.1305 8.16723 12.8408 8.45717L8.54102 12.757C8.39106 12.9069 8.20069 12.9776 8.01074 12.9777C7.82074 12.9777 7.63047 12.907 7.48047 12.757L5.87012 11.1476C5.58025 10.8576 5.58023 10.377 5.87012 10.0871C6.16008 9.79709 6.64065 9.79716 6.93066 10.0871L8.01074 11.1671L11.7803 7.3976Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>The fascist nonsense around requiring sites to collect IDs for entry continues. It’s a privacy nightmare, slated to destroy the internet as we know it. EFF <a href="https://www.eff.org/deeplinks/2026/04/act-now-stop-californias-paternalistic-and-privacy-destroying-social-media-ban">breaks down a bill</a> in California that’s got all the people confused.</p>
		<p>State healthcare websites are <a href="https://www.techbrew.com/stories/2026/05/04/state-health-insurance-data-big-tech">sharing personal health data</a> with big-tech monsters. Race, location, and immigration data is sent along with it. The source? Ad trackers served by people who don’t know what they’re doing.</p>
	</section>
	<section>
		
	<h2>Tools and platforms
		<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M15.7402 20C16.1502 20 16.4902 20.34 16.4902 20.75C16.4902 21.16 16.1502 21.5 15.7402 21.5H5.74023C5.33023 21.5 4.99023 21.16 4.99023 20.75C4.99023 20.34 5.33023 20 5.74023 20H15.7402ZM15.4805 0C16.2602 1.17267e-05 16.8302 0.0296231 17.3301 0.0996094C20.81 0.479611 21.4902 2.55992 21.4902 6.00977V12.3301C21.4902 15.78 20.8095 17.8602 17.3096 18.2402C16.8398 18.3102 16.27 18.3398 15.4805 18.3398H6.00977C5.21999 18.3398 4.65006 18.3102 4.16016 18.2402C0.690177 17.8602 8.13835e-06 15.78 0 12.3301V6.00977C3.20806e-05 2.56 0.680012 0.47968 4.17969 0.0996094C4.65964 0.0296167 5.22989 6.25456e-06 6.00977 0H15.4805ZM6 1.5C5.29021 1.5 4.78028 1.52988 4.36035 1.58984C2.20035 1.82984 1.49023 2.50051 1.49023 6.02051V12.3398C1.49023 15.8497 2.19999 16.5297 4.33984 16.7598C4.77979 16.8198 5.28989 16.8496 6.00977 16.8496H15.4805C16.2002 16.8496 16.7002 16.8198 17.1201 16.7598C19.28 16.5198 19.9902 15.85 19.9902 12.3301V6.00977C19.9902 2.49998 19.2796 1.81984 17.1396 1.58984C16.6897 1.52988 16.1895 1.5 15.4697 1.5H6ZM16 12.1104C16.41 12.1104 16.75 12.4504 16.75 12.8604C16.7498 13.2702 16.4199 13.6104 16 13.6104H5.49023C5.08046 13.6102 4.73068 13.2701 4.73047 12.8604C4.73047 12.4504 5.0607 12.1104 5.4707 12.1104H16ZM5.60059 6.07031C6.15047 6.07045 6.60059 6.5204 6.60059 7.07031C6.60045 7.62004 6.14052 8.07005 5.59082 8.07031C5.0409 8.07031 4.59095 7.6202 4.59082 7.07031C4.59082 6.52031 5.03082 6.07031 5.59082 6.07031H5.60059ZM8.74023 6.07031C9.29023 6.07031 9.74023 6.52031 9.74023 7.07031C9.7401 7.6202 9.30015 8.07031 8.74023 8.07031C8.19032 8.07031 7.74037 7.6202 7.74023 7.07031C7.74023 6.52031 8.18023 6.07031 8.74023 6.07031ZM16 6.32031C16.41 6.32031 16.75 6.66031 16.75 7.07031C16.7499 7.4802 16.4199 7.82031 16 7.82031H12.3203C11.9104 7.82031 11.5704 7.4802 11.5703 7.07031C11.5703 6.66031 11.9103 6.32031 12.3203 6.32031H16Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>Designer Josh Puckett has a cool font-management tool for macOS called <a href="https://pica.joshpuckett.me">Pica</a>. It’s simple, doing only what it needs to: show you how typefaces look and reveal their full character list. What makes it great are the filters, which recognize variable fonts and make them available for viewing.</p>
	</section>
	<section>
		
	<h2>Antifascism
		<svg width="20" height="22" viewBox="0 0 20 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M15.7787 4.07193H15.5392V3.23539C15.5392 1.98469 14.5214 0.965987 13.2698 0.965987C12.6818 0.965987 12.1454 1.1907 11.7419 1.55894C11.3794 0.786371 10.5954 0.25 9.68664 0.25C8.77792 0.25 7.99388 0.78719 7.63056 1.55976C7.22705 1.19152 6.69067 0.966806 6.10265 0.966806C4.85114 0.966806 3.83325 1.9846 3.83325 3.23621V3.29854C3.46256 3.03364 3.00901 2.87781 2.5194 2.87781C1.26788 2.87781 0.25 3.8956 0.25 5.14721V12.3144C0.25 17.5173 4.48269 21.75 9.68641 21.75C14.8901 21.75 19.1228 17.5173 19.1228 12.3144V7.41745C19.1228 5.57295 17.622 4.07203 15.7782 4.07203L15.7787 4.07193ZM13.2699 1.92241C13.9941 1.92241 14.5838 2.51127 14.5838 3.23627V4.07199H11.956V3.23545C11.956 2.51127 12.5458 1.92241 13.2699 1.92241ZM8.37296 2.51948C8.37296 1.79531 8.96182 1.20563 9.68681 1.20563C10.4118 1.20563 11.0007 1.79449 11.0007 2.51948V4.07199C10.3421 4.07199 9.80573 4.60836 9.80573 5.26693C9.80573 6.29128 10.2691 7.20983 10.9974 7.82418C10.972 8.52622 10.3938 9.08964 9.68599 9.08964C8.96182 9.08964 8.37214 8.50078 8.37214 7.77578L8.37296 2.51948ZM4.78987 3.23547C4.78987 2.5113 5.37873 1.92162 6.10372 1.92162C6.8279 1.92162 7.41758 2.51048 7.41758 3.23547L7.4184 7.7749C7.4184 8.49908 6.82954 9.08875 6.10454 9.08875C5.38037 9.08875 4.79069 8.49989 4.79069 7.7749L4.78987 3.23547ZM1.20678 5.14721C1.20678 4.42304 1.79564 3.83336 2.52064 3.83336C3.24563 3.83336 3.83531 4.42222 3.83531 5.14721V7.775C3.83531 8.49918 3.24645 9.08886 2.52146 9.08886C1.79728 9.08886 1.2076 8.5 1.2076 7.775L1.20678 5.14721ZM18.1671 12.3136C18.1671 16.9899 14.3634 20.7939 9.68685 20.7939C5.01032 20.7939 1.20657 16.9901 1.20657 12.3136V9.62366C1.57727 9.88856 2.03081 10.0444 2.52043 10.0444C3.24788 10.0444 3.89662 9.69993 4.31243 9.1652C4.72825 9.69911 5.37697 10.0444 6.10444 10.0444C6.83191 10.0444 7.48063 9.69993 7.89644 9.1652C8.31226 9.69911 8.96098 10.0444 9.68845 10.0444C10.7382 10.0444 11.6223 9.3284 11.8814 8.35901C12.2735 8.52058 12.7024 8.60997 13.1526 8.60997H14.5854V9.82294C11.3836 10.0674 8.8526 12.7516 8.8526 16.0158C8.8526 16.2798 9.06665 16.4931 9.32991 16.4931C9.59399 16.4931 9.80722 16.279 9.80722 16.0158C9.80722 13.1182 12.165 10.7604 15.0626 10.7604C15.3267 10.7604 15.5399 10.5463 15.5399 10.2831V8.13357C15.5399 7.86948 15.3259 7.65626 15.0626 7.65626H13.1509C11.8337 7.65626 10.7618 6.58433 10.7618 5.26718C10.7618 5.13514 10.8684 5.02771 11.0013 5.02771H15.7786C17.0957 5.02771 18.1676 6.09963 18.1676 7.41678L18.1671 12.3136Z" fill="currentColor" stroke="currentColor" stroke-width="0.5" />
		</svg>
	</h2>
	
		<p>Wanna make sure you’re prepared to protect your neighbors from ICE? CrimethInc has you covered. They’ve published a <a href="https://crimethinc.com/2026/05/07/protecting-our-neighbors-from-ice-a-do-it-yourself-community-defense-skills-workshop-guide">DIY community defense skills guide</a>. It’s packed with info and easy to read.</p>
	</section>
</div>
<h2>At the moment</h2>
<p>This week I’ve been busy <a href="https://mas.to/@markwyner/116534545142076614">reviewing portfolios and resumes</a>. I offered to help folks find work, and a wall of people responded. I’m honored that people trust me to review their work. I’m also continuing to work on my upcoming <a href="https://pdxa11yux.org/events/2026/05/27/alt-text-is-the-ocean-you-thought-was-a-pond.html">accessibility lecture</a> for the Portland Accessibility and UX Meetup. More on my <a href="https://markwyner.omg.lol/now">now page</a>.</p>]]></content><author><name></name></author><category term="nano-bytes" /><summary type="html"><![CDATA[Photo by Mark Wyner The weekly curated list of things that bring me joy. Plus bytes on design, code, accessibility, privacy, and tools you might find useful. Available via RSS and email. This week’s goodies…]]></summary></entry><entry><title type="html">Nano Bytes, Vol. 03</title><link href="https://markwrites.io/nano-bytes-03/" rel="alternate" type="text/html" title="Nano Bytes, Vol. 03" /><published>2026-05-05T00:00:00+00:00</published><updated>2026-05-05T00:00:00+00:00</updated><id>https://markwrites.io/nano-bytes-03</id><content type="html" xml:base="https://markwrites.io/nano-bytes-03/"><![CDATA[<figure>
	<img src="/images/nano-bytes/byte-poster-03.jpg" alt="Very clean engine with an array of red hose caps and a beautiful, smooth, sea-foam green section. It’s in front of a clean white background." />
	<figcaption>Photo by <a href="https://markwyner.some.pics/69f97a6fba584">Mark Wyner</a></figcaption>
</figure>

<p>The weekly curated list of things that bring me joy. Plus bytes on design, code, accessibility, privacy, and tools you might find useful. Available via <a href="/newsletter/">RSS and email</a>. This week’s goodies…</p>

<!--more-->

<div class="byte-block">
	<section>
		
	<h2>The more you know
		<svg width="19" height="22" viewBox="0 0 19 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M12.75 0C17.16 0 18.5 1.34 18.5 5.75V17.25C18.5 19.59 16.59 21.5 14.25 21.5H4.25C1.91 21.5 0 19.59 0 17.25V5.75C0 1.34 1.34 0 5.75 0H12.75ZM3.59961 14.5C2.43992 14.5002 1.50021 15.4399 1.5 16.5996V17.25C1.5 18.77 2.73 20 4.25 20H14.25C15.77 20 17 18.77 17 17.25V16.291C16.9908 16.2355 16.986 16.1785 16.9902 16.1201C17.0002 16.0001 17 15.87 17 15.75V14.5H3.59961ZM5.75 1.5C2.17 1.5 1.5 2.18 1.5 5.75V13.6787C2.09207 13.252 2.81751 13.0001 3.59961 13H17V5.75C17 2.18 16.33 1.5 12.75 1.5H5.75ZM10.25 8.5C10.66 8.5 11 8.84 11 9.25C11 9.66 10.66 10 10.25 10H5.25C4.84 10 4.5 9.66 4.5 9.25C4.5 8.84 4.84 8.5 5.25 8.5H10.25ZM13.25 5C13.66 5 14 5.34 14 5.75C14 6.16 13.66 6.5 13.25 6.5H5.25C4.84 6.5 4.5 6.16 4.5 5.75C4.5 5.34 4.84 5 5.25 5H13.25Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p><a href="https://en.wikipedia.org/wiki/Diatom">Diatoms</a> constitute nearly half of the material found in oceans. They produce 20–50% of the planet’s oxygen. Shells of dead diatoms remain as marine sediment, and they are beautiful. Photographer Jon McCormack has <a href="https://jonmccormack.com/wp-content/uploads/2025/07/BigDiatomStack-Edit-2.jpg">revealed them</a> with his <a href="https://jonmccormack.com/wonder/hidden-worlds/">microscopic photography</a>.</p>
	</section>
	<section>
		
	<h2>Tickle me pink
		<svg width="22" height="20" viewBox="0 0 22 20" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M10.75 19.3C10.44 19.3 10.14 19.26 9.89 19.17C6.07 17.86 0 13.21 0 6.34C0 2.84 2.83 0 6.31 0C8 0 9.58 0.66 10.75 1.84C11.92 0.66 13.5 0 15.19 0C18.67 0 21.5 2.85 21.5 6.34C21.5 13.22 15.43 17.86 11.61 19.17C11.36 19.26 11.06 19.3 10.75 19.3ZM6.31 1.5C3.66 1.5 1.5 3.67 1.5 6.34C1.5 13.17 8.07 16.97 10.38 17.76C10.56 17.82 10.95 17.82 11.13 17.76C13.43 16.97 20.01 13.18 20.01 6.34C20.01 3.67 17.85 1.5 15.2 1.5C13.68 1.5 12.27 2.21 11.36 3.44C11.08 3.82 10.44 3.82 10.16 3.44C9.23 2.2 7.83 1.5 6.31 1.5Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>Rachel Mentzer repurposes discarded materials like boxes and debris into art. And <a href="https://www.rachelmentzerart.com">the results</a> beautiful.</p>
		<p>A friend introduced me to the mysterious music of <a href="https://cryocrypt.bandcamp.com">Mountain Realm</a>. They call it “dark fantasy dungeon synth.” The description told me “no.” Glad thing I like my friend, because now I have some of the best background music for designing and coding.</p>
	</section>
	<section>
		
	<h2>Privacy lockdown
		<svg width="19" height="22" viewBox="0 0 19 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M7.57031 0.277485C8.56029 -0.092505 10.1203 -0.0924849 11.1104 0.277485L16.1006 2.1476C17.5505 2.68766 18.6806 4.3274 18.6807 5.86733V13.297C18.6807 14.717 17.7903 16.487 16.6504 17.3371L12.3506 20.547C11.5206 21.187 10.4406 21.507 9.35059 21.507C8.26059 21.507 7.18008 21.1878 6.33008 20.5578L2.03027 17.3478C0.890379 16.4979 0.000165441 14.7177 0 13.3078V5.86733C1.73148e-05 4.32749 1.1303 2.68777 2.58008 2.1476L7.57031 0.277485ZM10.6104 1.6769C9.93031 1.43699 8.7705 1.43767 8.10059 1.68764L3.11035 3.55776C2.26054 3.87784 1.51089 4.95724 1.51074 5.87709V13.3078C1.51093 14.2577 2.18077 15.5877 2.93066 16.1476L7.23047 19.3576C8.38044 20.2175 10.3205 20.2175 11.4805 19.3576L15.7803 16.1476C16.5402 15.5777 17.2 14.2577 17.2002 13.3078V5.86733C17.2002 4.95734 16.4506 3.87701 15.6006 3.54702L10.6104 1.6769ZM11.7803 7.3976C12.0703 7.1076 12.5508 7.1076 12.8408 7.3976C13.1305 7.68756 13.1305 8.16723 12.8408 8.45717L8.54102 12.757C8.39106 12.9069 8.20069 12.9776 8.01074 12.9777C7.82074 12.9777 7.63047 12.907 7.48047 12.757L5.87012 11.1476C5.58025 10.8576 5.58023 10.377 5.87012 10.0871C6.16008 9.79709 6.64065 9.79716 6.93066 10.0871L8.01074 11.1671L11.7803 7.3976Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>It’s presumed that Signal is working on a <a href="https://aboutsignal.com/news/signal-desktop-without-a-mobile-phone-standalone-version-in-development">stand-alone desktop app</a> that won’t require a mobile number. There have been murmurings for a while now. Perhaps it’s finally coming to fruition. What a gift that would be.</p>
		<p>I’m continuing to work my way through the <a href="https://www.privacyguides.org/en/activism/toolbox">Privacy Guides Activism Toolbox</a>. It’s massive. It was compiled and published by Em, who is a privacy pro.</p>
	</section>
	<section>
		
	<h2>Design bytes
		<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M6.25 0C8.15992 0 9.49989 1.34013 9.5 3.25V5.25L10.9199 3.83008C12.2299 2.52008 14.2105 2.52008 15.5205 3.83008L17.6406 5.9502C18.9903 7.30006 18.9902 9.1999 17.6406 10.5498L16.1885 12H18.2402C20.1502 12 21.4901 13.3401 21.4902 15.25V18.25C21.4902 20.15 20.1502 21.4902 18.2402 21.4902H4.74023L4.51172 21.4844C4.28011 21.4731 4.03986 21.4454 3.7998 21.4004C3.6299 21.3604 3.48001 21.3203 3.33008 21.2803C3.16008 21.2303 2.99961 21.1704 2.84961 21.1104C2.80978 21.1003 2.77991 21.0803 2.75 21.0703C2.6194 21.0031 2.49663 20.9344 2.37891 20.8662C2.33278 20.8399 2.28639 20.814 2.24121 20.7861C2.09591 20.6973 1.95941 20.6065 1.83008 20.5107C1.81021 20.5008 1.8 20.4808 1.78027 20.4707C1.63027 20.3507 1.49035 20.2298 1.36035 20.0898C1.22037 19.9399 1.11976 19.8202 1.00977 19.7002C0.779814 19.4002 0.589895 19.0999 0.419922 18.75C0.400064 18.7201 0.389833 18.6804 0.379883 18.6406C0.322738 18.5073 0.275333 18.3734 0.236328 18.2314C0.227722 18.2044 0.218056 18.1776 0.209961 18.1504C0.201775 18.1231 0.195501 18.0956 0.19043 18.0684C0.151897 17.9315 0.122328 17.8236 0.0996094 17.71C0.0296593 17.3601 0 17.0499 0 16.75V3.25C0.000114183 1.34013 1.34008 0 3.25 0H6.25ZM8.28418 19.9062C8.25863 19.9346 8.23236 19.9624 8.20605 19.9902H18.2402C19.3202 19.9902 19.9902 19.3202 19.9902 18.2402V15.2402C19.9902 14.1602 19.3202 13.4902 18.2402 13.4902H14.71L8.28418 19.9062ZM3.24023 1.5C2.16032 1.5 1.49034 2.17014 1.49023 3.25V16.7402C1.49023 16.9502 1.50957 17.1704 1.55957 17.4004C1.5751 17.4703 1.59624 17.5523 1.61914 17.6416C1.62923 17.6643 1.64237 17.6859 1.65039 17.71C1.78765 18.1475 2.01328 18.5448 2.30664 18.8809C2.31935 18.8951 2.3326 18.9092 2.3457 18.9238C2.50219 19.0968 2.67703 19.2525 2.86719 19.3887C2.98595 19.4716 3.11452 19.5517 3.25879 19.6299C3.29412 19.6483 3.33012 19.6655 3.36621 19.6826C3.37401 19.6847 3.38185 19.6866 3.38965 19.6904C3.4003 19.6958 3.41433 19.7034 3.43066 19.7129C3.4696 19.7304 3.50909 19.7467 3.54883 19.7627C3.62627 19.7906 3.70284 19.8166 3.78027 19.8398C3.89022 19.8698 4.0004 19.9007 4.11035 19.9307C4.66018 20.0306 5.24987 19.9998 5.71973 19.8398C5.78973 19.8098 5.89047 19.7802 5.98047 19.7402C6.30018 19.6103 6.56019 19.4506 6.79004 19.2607C6.87197 19.1952 6.93305 19.1351 6.99121 19.083C7.01204 19.0543 7.03512 19.0263 7.06055 19C7.66033 18.3901 7.99016 17.5802 7.99023 16.7305V3.25C7.99013 2.17022 7.32001 1.5001 6.24023 1.5H3.24023ZM4.74023 14.9902C5.70023 14.9902 6.49023 15.7802 6.49023 16.7402C6.49023 17.7002 5.70023 18.4902 4.74023 18.4902C3.78023 18.4902 2.99023 17.7002 2.99023 16.7402C2.99023 15.7802 3.78023 14.9902 4.74023 14.9902ZM4.74023 16.4902C4.60023 16.4902 4.49023 16.6002 4.49023 16.7402C4.49023 17.0202 4.99023 17.0202 4.99023 16.7402C4.99023 16.6002 4.88023 16.4902 4.74023 16.4902ZM14.46 4.90039C13.71 4.15041 12.7305 4.15041 11.9805 4.90039L9.5 7.38086V16.5703L16.5801 9.5C17.34 8.74004 17.34 7.79049 16.5801 7.02051L14.46 4.90039Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>Designer Cameron Askin published a giant library of retro, animated video game screens called <a href="https://titlescream.cameronaskin.com/">Title Scream</a>. They’re inspired by 8/16-bit games. And they’re animated.</p>
		<p>When I launched the redesign of my website a little while back, it included three modes: light, dark, and colorful. The last one was subpar. So I <a href="https://markwyner.com">upgraded the palette</a>, and now it really <em>is</em> colorful. While I was in there, I rolled out a <a href="https://mas.to/@markwyner/116509333916970913">fresh 404 page</a> which has me giddy.</p>
	</section>
	<section>
		
	<h2>Code bytes
		<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M10.75 0C16.68 0 21.5 4.82 21.5 10.75C21.5 16.68 16.68 21.5 10.75 21.5C4.82 21.5 0 16.68 0 10.75C0 4.82 4.82 0 10.75 0ZM10.75 1.5C5.65 1.5 1.5 5.65 1.5 10.75C1.5 15.85 5.65 20 10.75 20C15.85 20 20 15.85 20 10.75C20 5.65 15.85 1.5 10.75 1.5ZM11.0703 8.11035C11.2303 7.73048 11.6699 7.55001 12.0498 7.71973C12.4297 7.8797 12.6103 8.32001 12.4404 8.70996L10.4404 13.3799C10.3204 13.6599 10.04 13.8301 9.75 13.8301C9.65005 13.8301 9.54992 13.8105 9.45996 13.7705C9.07999 13.6105 8.90038 13.1703 9.07031 12.7803L11.0703 8.11035ZM6.21973 8.21973C6.50973 7.92973 6.99027 7.92973 7.28027 8.21973C7.5702 8.50972 7.57022 8.99029 7.28027 9.28027L5.80957 10.75L7.28027 12.2197C7.5702 12.5097 7.57022 12.9903 7.28027 13.2803C7.13029 13.4303 6.93998 13.5 6.75 13.5C6.56001 13.5 6.36972 13.4303 6.21973 13.2803L4.21973 11.2803C3.92973 10.9903 3.92973 10.5097 4.21973 10.2197L6.21973 8.21973ZM14.2197 8.21973C14.5097 7.92973 14.9903 7.92973 15.2803 8.21973L17.2803 10.2197C17.5702 10.5097 17.5702 10.9903 17.2803 11.2803L15.2803 13.2803C15.1303 13.4303 14.94 13.5 14.75 13.5C14.56 13.5 14.3697 13.4303 14.2197 13.2803C13.9297 12.9903 13.9297 12.5097 14.2197 12.2197L15.6904 10.75L14.2197 9.28027C13.9297 8.99027 13.9297 8.50973 14.2197 8.21973Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>Do you know that there’s a <code>tab-size</code> CSS property? I didn’t until just recently. It’s not super useful in general. But if you’re using code blocks in an <a href="https://markwrites.io/usability-accessibility-and-the-clickable-area-of-buttons/">article</a> or documentation, it’s perfect for some subtle formatting control.</p>
	</section>
	<section>
		
	<h2>Accessibility insights
		<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M10.75 0C16.68 0 21.5 4.82 21.5 10.75C21.5 16.68 16.68 21.5 10.75 21.5C4.82 21.5 0 16.68 0 10.75C0 4.82 4.82 0 10.75 0ZM10.75 1.5C5.65 1.5 1.5 5.65 1.5 10.75C1.5 15.85 5.65 20 10.75 20C15.85 20 20 15.85 20 10.75C20 5.65 15.85 1.5 10.75 1.5ZM15.0879 6.84863C15.4991 6.73933 15.9647 6.98532 16.0742 7.39648C16.1835 7.80767 15.9375 8.27334 15.5264 8.38281L12.1582 9.39551C11.9936 9.45065 11.8839 9.61535 11.8838 9.80664C11.9105 10.3548 11.9657 11.5325 12.0752 11.9707C12.3477 13.2227 13.8371 16.6396 13.8555 16.6816C14.0469 17.0929 13.8829 17.5586 13.4717 17.75C13.3622 17.8043 13.253 17.832 13.1436 17.832C12.8427 17.832 12.5678 17.6687 12.4307 17.3945L10.8975 14.0801L9.28027 17.3662C9.17063 17.6668 8.86911 17.8311 8.56836 17.8311C8.45889 17.831 8.34969 17.8042 8.24023 17.749C7.85664 17.5577 7.66524 17.0928 7.85645 16.6816C7.85645 16.6816 9.36256 13.2294 9.63672 11.9697C9.74616 11.5307 9.80055 10.353 9.82812 9.80566C9.85462 9.61358 9.71826 9.44966 9.55371 9.39453L6.18555 8.38184C5.74754 8.27234 5.50061 7.80617 5.6377 7.36816C5.7741 6.95716 6.24023 6.76553 6.65137 6.875C6.67932 6.8839 9.75066 7.86113 10.8418 7.86133C11.9644 7.86133 15.0879 6.84863 15.0879 6.84863ZM10.8975 4C11.7442 4.00004 12.4316 4.68744 12.4316 5.53418C12.4315 6.38158 11.7441 7.06734 10.8975 7.06738C10.0508 7.06738 9.36346 6.38162 9.36328 5.53418C9.36328 4.68744 10.0507 4 10.8975 4Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>The Web Standards Commission has a spot-on collection of <a href="https://wsc.us.org/tools">testing tools</a> for accessibility.</p>
		<p>Cognition and neurology are commonly ignored when it comes to accessibility. The Mozilla Developer Network has a <a href="https://developer.mozilla.org/en-US/docs/Web/Accessibility/Guides/Cognitive_accessibility">deep article</a> that covers much of what you need to know about it.</p>
	</section>
</div>
<h2>At the moment</h2>
<p>This week has kept me super busy with design system documentation. I’m also really close to completing my music app for macOS. More on my <a href="https://markwyner.omg.lol/now">now page</a>.</p>]]></content><author><name></name></author><category term="nano-bytes" /><summary type="html"><![CDATA[Photo by Mark Wyner The weekly curated list of things that bring me joy. Plus bytes on design, code, accessibility, privacy, and tools you might find useful. Available via RSS and email. This week’s goodies…]]></summary></entry><entry><title type="html">Nano Bytes, Vol. 02</title><link href="https://markwrites.io/nano-bytes-02/" rel="alternate" type="text/html" title="Nano Bytes, Vol. 02" /><published>2026-04-26T00:00:00+00:00</published><updated>2026-04-26T00:00:00+00:00</updated><id>https://markwrites.io/nano-bytes-02</id><content type="html" xml:base="https://markwrites.io/nano-bytes-02/"><![CDATA[<figure>
	<img src="/images/nano-bytes/byte-poster-02.jpg" alt="A collection of scooters of in colors and conditions, parked diagonally off a curb in front of a weathered brick building." />
	<figcaption>Photo by <a href="https://markwyner.some.pics/69b655d558619">Mark Wyner</a></figcaption>
</figure>

<p>The weekly curated list of things that bring me joy. Plus bytes on design, code, accessibility, privacy, and tools you might find useful. Available by <a href="/newsletter/">email and RSS</a>. This week’s goodies…</p>

<!--more-->

<div class="byte-block">
	<section>
		
	<h2>Tickle me pink
		<svg width="22" height="20" viewBox="0 0 22 20" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M10.75 19.3C10.44 19.3 10.14 19.26 9.89 19.17C6.07 17.86 0 13.21 0 6.34C0 2.84 2.83 0 6.31 0C8 0 9.58 0.66 10.75 1.84C11.92 0.66 13.5 0 15.19 0C18.67 0 21.5 2.85 21.5 6.34C21.5 13.22 15.43 17.86 11.61 19.17C11.36 19.26 11.06 19.3 10.75 19.3ZM6.31 1.5C3.66 1.5 1.5 3.67 1.5 6.34C1.5 13.17 8.07 16.97 10.38 17.76C10.56 17.82 10.95 17.82 11.13 17.76C13.43 16.97 20.01 13.18 20.01 6.34C20.01 3.67 17.85 1.5 15.2 1.5C13.68 1.5 12.27 2.21 11.36 3.44C11.08 3.82 10.44 3.82 10.16 3.44C9.23 2.2 7.83 1.5 6.31 1.5Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>This week I <strong>discovered</strong> the art of <a href="https://www.nicholasmoegly.com/">Nicholas Moegly</a>. He self-describes his illustrations as “moody, dark, and nostalgic imagery that plays with light and shadows.” He captures the twilight hours, which lends itself to some fascinating compositions.</p>
		<p>Photographer <a href="https://austnfischer.com/">Austin Fischer</a> focuses on “gender theory and the works of artists and theorist that question the gender binary.” But what makes his work stand out for me is the feeling I get while looking into the gazes of his subjects. They make me feel uncomfortable because of how intimate they are.</p>
	</section>
	<section>
		
	<h2>Privacy lockdown
		<svg width="19" height="22" viewBox="0 0 19 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M7.57031 0.277485C8.56029 -0.092505 10.1203 -0.0924849 11.1104 0.277485L16.1006 2.1476C17.5505 2.68766 18.6806 4.3274 18.6807 5.86733V13.297C18.6807 14.717 17.7903 16.487 16.6504 17.3371L12.3506 20.547C11.5206 21.187 10.4406 21.507 9.35059 21.507C8.26059 21.507 7.18008 21.1878 6.33008 20.5578L2.03027 17.3478C0.890379 16.4979 0.000165441 14.7177 0 13.3078V5.86733C1.73148e-05 4.32749 1.1303 2.68777 2.58008 2.1476L7.57031 0.277485ZM10.6104 1.6769C9.93031 1.43699 8.7705 1.43767 8.10059 1.68764L3.11035 3.55776C2.26054 3.87784 1.51089 4.95724 1.51074 5.87709V13.3078C1.51093 14.2577 2.18077 15.5877 2.93066 16.1476L7.23047 19.3576C8.38044 20.2175 10.3205 20.2175 11.4805 19.3576L15.7803 16.1476C16.5402 15.5777 17.2 14.2577 17.2002 13.3078V5.86733C17.2002 4.95734 16.4506 3.87701 15.6006 3.54702L10.6104 1.6769ZM11.7803 7.3976C12.0703 7.1076 12.5508 7.1076 12.8408 7.3976C13.1305 7.68756 13.1305 8.16723 12.8408 8.45717L8.54102 12.757C8.39106 12.9069 8.20069 12.9776 8.01074 12.9777C7.82074 12.9777 7.63047 12.907 7.48047 12.757L5.87012 11.1476C5.58025 10.8576 5.58023 10.377 5.87012 10.0871C6.16008 9.79709 6.64065 9.79716 6.93066 10.0871L8.01074 11.1671L11.7803 7.3976Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>Apple issued a patch for an <a href="https://support.apple.com/en-us/127002">iOS vulnerability</a> that enabled the FBI to access Signal messages. It was <a href="https://mastodon.world/@signalapp/116450550044121832"><em>not</em> a Signal vulnerability</a>. Apple’s notifications were storing messages outside the app. I know, right?</p>
	</section>
	<section>
		
	<h2>Design bytes
		<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M6.25 0C8.15992 0 9.49989 1.34013 9.5 3.25V5.25L10.9199 3.83008C12.2299 2.52008 14.2105 2.52008 15.5205 3.83008L17.6406 5.9502C18.9903 7.30006 18.9902 9.1999 17.6406 10.5498L16.1885 12H18.2402C20.1502 12 21.4901 13.3401 21.4902 15.25V18.25C21.4902 20.15 20.1502 21.4902 18.2402 21.4902H4.74023L4.51172 21.4844C4.28011 21.4731 4.03986 21.4454 3.7998 21.4004C3.6299 21.3604 3.48001 21.3203 3.33008 21.2803C3.16008 21.2303 2.99961 21.1704 2.84961 21.1104C2.80978 21.1003 2.77991 21.0803 2.75 21.0703C2.6194 21.0031 2.49663 20.9344 2.37891 20.8662C2.33278 20.8399 2.28639 20.814 2.24121 20.7861C2.09591 20.6973 1.95941 20.6065 1.83008 20.5107C1.81021 20.5008 1.8 20.4808 1.78027 20.4707C1.63027 20.3507 1.49035 20.2298 1.36035 20.0898C1.22037 19.9399 1.11976 19.8202 1.00977 19.7002C0.779814 19.4002 0.589895 19.0999 0.419922 18.75C0.400064 18.7201 0.389833 18.6804 0.379883 18.6406C0.322738 18.5073 0.275333 18.3734 0.236328 18.2314C0.227722 18.2044 0.218056 18.1776 0.209961 18.1504C0.201775 18.1231 0.195501 18.0956 0.19043 18.0684C0.151897 17.9315 0.122328 17.8236 0.0996094 17.71C0.0296593 17.3601 0 17.0499 0 16.75V3.25C0.000114183 1.34013 1.34008 0 3.25 0H6.25ZM8.28418 19.9062C8.25863 19.9346 8.23236 19.9624 8.20605 19.9902H18.2402C19.3202 19.9902 19.9902 19.3202 19.9902 18.2402V15.2402C19.9902 14.1602 19.3202 13.4902 18.2402 13.4902H14.71L8.28418 19.9062ZM3.24023 1.5C2.16032 1.5 1.49034 2.17014 1.49023 3.25V16.7402C1.49023 16.9502 1.50957 17.1704 1.55957 17.4004C1.5751 17.4703 1.59624 17.5523 1.61914 17.6416C1.62923 17.6643 1.64237 17.6859 1.65039 17.71C1.78765 18.1475 2.01328 18.5448 2.30664 18.8809C2.31935 18.8951 2.3326 18.9092 2.3457 18.9238C2.50219 19.0968 2.67703 19.2525 2.86719 19.3887C2.98595 19.4716 3.11452 19.5517 3.25879 19.6299C3.29412 19.6483 3.33012 19.6655 3.36621 19.6826C3.37401 19.6847 3.38185 19.6866 3.38965 19.6904C3.4003 19.6958 3.41433 19.7034 3.43066 19.7129C3.4696 19.7304 3.50909 19.7467 3.54883 19.7627C3.62627 19.7906 3.70284 19.8166 3.78027 19.8398C3.89022 19.8698 4.0004 19.9007 4.11035 19.9307C4.66018 20.0306 5.24987 19.9998 5.71973 19.8398C5.78973 19.8098 5.89047 19.7802 5.98047 19.7402C6.30018 19.6103 6.56019 19.4506 6.79004 19.2607C6.87197 19.1952 6.93305 19.1351 6.99121 19.083C7.01204 19.0543 7.03512 19.0263 7.06055 19C7.66033 18.3901 7.99016 17.5802 7.99023 16.7305V3.25C7.99013 2.17022 7.32001 1.5001 6.24023 1.5H3.24023ZM4.74023 14.9902C5.70023 14.9902 6.49023 15.7802 6.49023 16.7402C6.49023 17.7002 5.70023 18.4902 4.74023 18.4902C3.78023 18.4902 2.99023 17.7002 2.99023 16.7402C2.99023 15.7802 3.78023 14.9902 4.74023 14.9902ZM4.74023 16.4902C4.60023 16.4902 4.49023 16.6002 4.49023 16.7402C4.49023 17.0202 4.99023 17.0202 4.99023 16.7402C4.99023 16.6002 4.88023 16.4902 4.74023 16.4902ZM14.46 4.90039C13.71 4.15041 12.7305 4.15041 11.9805 4.90039L9.5 7.38086V16.5703L16.5801 9.5C17.34 8.74004 17.34 7.79049 16.5801 7.02051L14.46 4.90039Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>Mark W.rites got some long-overdue improvements this week. I had been filtering content by tags, which didn’t feel right. So I consolidated everything into five categories plus one for Nano Bytes. I also realized <a href="https://markwrites.io/archive/">the archive</a> emphasized dates too much, when titles are what’s important. So I modified the UI to reflect this. (There’s a new Easter egg there, too.)</p>
		<p>I’m watching the documentary series “<a href="https://jonathanhoefler.com/documentary">Abstract: the Art of Design</a>,” about design and creative professions. I can’t get through an entire episode without stopping to work on my projects. It’s that inspiring.</p>
	</section>
	<section>
		
	<h2>Code bytes
		<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M10.75 0C16.68 0 21.5 4.82 21.5 10.75C21.5 16.68 16.68 21.5 10.75 21.5C4.82 21.5 0 16.68 0 10.75C0 4.82 4.82 0 10.75 0ZM10.75 1.5C5.65 1.5 1.5 5.65 1.5 10.75C1.5 15.85 5.65 20 10.75 20C15.85 20 20 15.85 20 10.75C20 5.65 15.85 1.5 10.75 1.5ZM11.0703 8.11035C11.2303 7.73048 11.6699 7.55001 12.0498 7.71973C12.4297 7.8797 12.6103 8.32001 12.4404 8.70996L10.4404 13.3799C10.3204 13.6599 10.04 13.8301 9.75 13.8301C9.65005 13.8301 9.54992 13.8105 9.45996 13.7705C9.07999 13.6105 8.90038 13.1703 9.07031 12.7803L11.0703 8.11035ZM6.21973 8.21973C6.50973 7.92973 6.99027 7.92973 7.28027 8.21973C7.5702 8.50972 7.57022 8.99029 7.28027 9.28027L5.80957 10.75L7.28027 12.2197C7.5702 12.5097 7.57022 12.9903 7.28027 13.2803C7.13029 13.4303 6.93998 13.5 6.75 13.5C6.56001 13.5 6.36972 13.4303 6.21973 13.2803L4.21973 11.2803C3.92973 10.9903 3.92973 10.5097 4.21973 10.2197L6.21973 8.21973ZM14.2197 8.21973C14.5097 7.92973 14.9903 7.92973 15.2803 8.21973L17.2803 10.2197C17.5702 10.5097 17.5702 10.9903 17.2803 11.2803L15.2803 13.2803C15.1303 13.4303 14.94 13.5 14.75 13.5C14.56 13.5 14.3697 13.4303 14.2197 13.2803C13.9297 12.9903 13.9297 12.5097 14.2197 12.2197L15.6904 10.75L14.2197 9.28027C13.9297 8.99027 13.9297 8.50973 14.2197 8.21973Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p><a href="https://patiofoundry.com/">Patio</a> is a type foundry from one of my favorite foundries, <a href="https://www.atipofoundry.com/">Atipo</a>. The Patio website is beautifully simple. Large fonts, front and center. My favorite. And appropriate. But my ephemeral delight turned to sorrow when I discovered they weren’t using HTML text. So I decided to whip up a version with <a href="https://es-d-4147450720260328-019d2c79-b103-7809-98ae-6d6f765e9891.codepen.dev/">fluid, responsive, HTML text</a>.</p>
		<p>Bryan Keller found a way to run the first version of <a href="https://bryankeller.github.io/2026/04/08/porting-mac-os-x-nintendo-wii.html">macOS X on a Nintendo Wii</a>. How is this useful? It isn’t. It’s just cool.</p>
	</section>
	<section>
		
	<h2>Tools and platforms
		<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M15.7402 20C16.1502 20 16.4902 20.34 16.4902 20.75C16.4902 21.16 16.1502 21.5 15.7402 21.5H5.74023C5.33023 21.5 4.99023 21.16 4.99023 20.75C4.99023 20.34 5.33023 20 5.74023 20H15.7402ZM15.4805 0C16.2602 1.17267e-05 16.8302 0.0296231 17.3301 0.0996094C20.81 0.479611 21.4902 2.55992 21.4902 6.00977V12.3301C21.4902 15.78 20.8095 17.8602 17.3096 18.2402C16.8398 18.3102 16.27 18.3398 15.4805 18.3398H6.00977C5.21999 18.3398 4.65006 18.3102 4.16016 18.2402C0.690177 17.8602 8.13835e-06 15.78 0 12.3301V6.00977C3.20806e-05 2.56 0.680012 0.47968 4.17969 0.0996094C4.65964 0.0296167 5.22989 6.25456e-06 6.00977 0H15.4805ZM6 1.5C5.29021 1.5 4.78028 1.52988 4.36035 1.58984C2.20035 1.82984 1.49023 2.50051 1.49023 6.02051V12.3398C1.49023 15.8497 2.19999 16.5297 4.33984 16.7598C4.77979 16.8198 5.28989 16.8496 6.00977 16.8496H15.4805C16.2002 16.8496 16.7002 16.8198 17.1201 16.7598C19.28 16.5198 19.9902 15.85 19.9902 12.3301V6.00977C19.9902 2.49998 19.2796 1.81984 17.1396 1.58984C16.6897 1.52988 16.1895 1.5 15.4697 1.5H6ZM16 12.1104C16.41 12.1104 16.75 12.4504 16.75 12.8604C16.7498 13.2702 16.4199 13.6104 16 13.6104H5.49023C5.08046 13.6102 4.73068 13.2701 4.73047 12.8604C4.73047 12.4504 5.0607 12.1104 5.4707 12.1104H16ZM5.60059 6.07031C6.15047 6.07045 6.60059 6.5204 6.60059 7.07031C6.60045 7.62004 6.14052 8.07005 5.59082 8.07031C5.0409 8.07031 4.59095 7.6202 4.59082 7.07031C4.59082 6.52031 5.03082 6.07031 5.59082 6.07031H5.60059ZM8.74023 6.07031C9.29023 6.07031 9.74023 6.52031 9.74023 7.07031C9.7401 7.6202 9.30015 8.07031 8.74023 8.07031C8.19032 8.07031 7.74037 7.6202 7.74023 7.07031C7.74023 6.52031 8.18023 6.07031 8.74023 6.07031ZM16 6.32031C16.41 6.32031 16.75 6.66031 16.75 7.07031C16.7499 7.4802 16.4199 7.82031 16 7.82031H12.3203C11.9104 7.82031 11.5704 7.4802 11.5703 7.07031C11.5703 6.66031 11.9103 6.32031 12.3203 6.32031H16Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>Developer Chris Hayes created an interesting <a href="https://www.hayes.software/projects/fediverse-reader/">feed reader</a> for the fediverse. It enables you to tap into a feed, stripped of all interactions. It’s just the post content for reading.</p>
		<p>I’ve been testing <a href="https://umami.is/">Umami</a> for analytics. Its reports show fewer traffic than the other two platforms I was using. But that’s because it’s more conscious about how it tracks. That’s a worthwhile trade-off.</p>
	</section>
	<section>
		
	<h2>Accessibility insights
		<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
			<path d="M10.75 0C16.68 0 21.5 4.82 21.5 10.75C21.5 16.68 16.68 21.5 10.75 21.5C4.82 21.5 0 16.68 0 10.75C0 4.82 4.82 0 10.75 0ZM10.75 1.5C5.65 1.5 1.5 5.65 1.5 10.75C1.5 15.85 5.65 20 10.75 20C15.85 20 20 15.85 20 10.75C20 5.65 15.85 1.5 10.75 1.5ZM15.0879 6.84863C15.4991 6.73933 15.9647 6.98532 16.0742 7.39648C16.1835 7.80767 15.9375 8.27334 15.5264 8.38281L12.1582 9.39551C11.9936 9.45065 11.8839 9.61535 11.8838 9.80664C11.9105 10.3548 11.9657 11.5325 12.0752 11.9707C12.3477 13.2227 13.8371 16.6396 13.8555 16.6816C14.0469 17.0929 13.8829 17.5586 13.4717 17.75C13.3622 17.8043 13.253 17.832 13.1436 17.832C12.8427 17.832 12.5678 17.6687 12.4307 17.3945L10.8975 14.0801L9.28027 17.3662C9.17063 17.6668 8.86911 17.8311 8.56836 17.8311C8.45889 17.831 8.34969 17.8042 8.24023 17.749C7.85664 17.5577 7.66524 17.0928 7.85645 16.6816C7.85645 16.6816 9.36256 13.2294 9.63672 11.9697C9.74616 11.5307 9.80055 10.353 9.82812 9.80566C9.85462 9.61358 9.71826 9.44966 9.55371 9.39453L6.18555 8.38184C5.74754 8.27234 5.50061 7.80617 5.6377 7.36816C5.7741 6.95716 6.24023 6.76553 6.65137 6.875C6.67932 6.8839 9.75066 7.86113 10.8418 7.86133C11.9644 7.86133 15.0879 6.84863 15.0879 6.84863ZM10.8975 4C11.7442 4.00004 12.4316 4.68744 12.4316 5.53418C12.4315 6.38158 11.7441 7.06734 10.8975 7.06738C10.0508 7.06738 9.36346 6.38162 9.36328 5.53418C9.36328 4.68744 10.0507 4 10.8975 4Z" fill="currentColor" />
		</svg>
	</h2>
	
		<p>Version 2.0 of <a href="https://ratioapp.markwyner.com">Ratio</a> was released. For new folks here, that’s my macOS color-contrast checker app for accessibility. Aside from some delightful UI upgrades, it now supports WCAG criteria for text, non-text elements, and focus states. (A Linux version is coming soon.)</p>
		<p>I’ve been playing around with various approaches for annotating my designs for accessibility. Even if you code your own designs (like me), you often still have folks reviewing the UI. Especially QA teams. So it’s good to document where you can. GitHub’s <a href="https://github.blog/changelog/2025-09-22-open-sourcing-the-github-annotation-toolkit/">annotation toolkit</a> was open-sourced last fall. It’s a little overwhelming, but only because it’s thorough. It’s worth a peek.</p>
	</section>
</div>
<h2>At the moment</h2>
<p>I’ve been designing and coding so much lately. Good thing I love it. I’m reading <em>The Second Sex</em>, by Simone de Beauvoir. It’s kind of blowing my mind. More on my <a href="https://markwyner.omg.lol/now">now page</a>.</p>]]></content><author><name></name></author><category term="nano-bytes" /><summary type="html"><![CDATA[Photo by Mark Wyner The weekly curated list of things that bring me joy. Plus bytes on design, code, accessibility, privacy, and tools you might find useful. Available by email and RSS. This week’s goodies…]]></summary></entry><entry><title type="html">Nano Bytes, Vol. 01</title><link href="https://markwrites.io/nano-bytes-01/" rel="alternate" type="text/html" title="Nano Bytes, Vol. 01" /><published>2026-04-19T00:00:00+00:00</published><updated>2026-04-19T00:00:00+00:00</updated><id>https://markwrites.io/nano-bytes-01</id><content type="html" xml:base="https://markwrites.io/nano-bytes-01/"><![CDATA[<figure>
	<img src="/images/nano-bytes/byte-poster-01.jpg" alt="Looking up at a tall weathered city building with the words “never surrender” spray painted below the top rim." />
	<figcaption>Photo by <a href="https://markwyner.some.pics/69b460cc6b8f4">Mark Wyner</a></figcaption>
</figure>

<p>The weekly curated list of things that bring me joy. Plus bytes on design, code, accessibility, privacy, and tools you might find useful. Available by <a href="/newsletter/">email and RSS</a>. This week’s goodies…</p>

<!--more-->

<h2 id="tickle-me-pink">Tickle me pink</h2>
<ul>
  <li>Otoboke Beaver is one of my favorite bands. They just released a new EP, “<a href="https://otobokebeaver.bandcamp.com/album/is-the-new-album-out-yet">Is the New Album Out Yet?</a>.” It includes a pressing on 4-inch vinyl (which I pre-ordered). Huzzah!</li>
  <li>The <a href="https://computerhistory.org/">Computer History Museum</a> is a cool resource. The oral histories from the museum have been curated on <a href="https://f0lkl0r3.dev/">f0lkl0r3.dev</a>, complete with light mode, reminiscent of a terminal.</li>
  <li>Japanese artist Manabu Kosaka makes <a href="https://coca11272000.wixsite.com/manabukosaka">intricate replicas</a> of machines and electronics out of paper. They are surreal.</li>
  <li>I just won a <a href="https://vid.northbound.online/w/vGLB1naoVz94TsNEf1M4xh">Rocket League tournament</a>. 9 matches, 2 hours, 1 winner. And I got MVP.</li>
  <li>Meteorites called angrites likely come from a protoplanet that was catastrophically destroyed in the early solar system. Its fragments are <a href="https://www.404media.co/the-destroyed-remnants-of-a-lost-world-are-falling-to-earth-scientists-discover/">falling to Earth</a>.</li>
</ul>

<h2 id="recent-mastodon-musings">Recent Mastodon musings</h2>
<ul>
  <li>Portland springs are always an <a href="https://mas.to/@markwyner/116378360624643223">aesthetic delight</a>.</li>
  <li>Poulain de la Barre, <a href="https://mas.to/@markwyner/116393322694082177">laying down gender equality</a> 300 years ago.</li>
  <li>Christopher Rothko’s <a href="https://mas.to/@markwyner/116392915909834576">No. 5 (Untitled)</a> at the Portland Art Museum.</li>
</ul>

<h2 id="design-bytes">Design bytes</h2>
<ul>
  <li>Swiss designer Wolfgang Weingart was part of an emerging group of designers criticized for “typographic barbarism.” For many of us, their style remains an inspiring era of design. Letterform Archive profiled his <a href="https://letterformarchive.org/news/from-the-collection-legacies-of-swiss-style-part-2-wolfgang-weingart/">series of covers</a> for Typografische Monatsblätter (TM).</li>
</ul>

<h2 id="code-bytes">Code bytes</h2>
<ul>
  <li>Christian Hofstede-Kuhn created a list of <a href="https://blog.hofstede.it/shell-tricks-that-actually-make-life-easier-and-save-your-sanity/">shell tips</a> that “make life easier and save your sanity.” While many of these are familiar, I learned some stellar tricks.</li>
  <li>This week, for the first time ever, I had a use for a <a href="https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a>. If you ever need it, you’ll be glad to have it.</li>
  <li>Recently I got <a href="https://mas.to/@markwyner/116260607724251195">Linux installed on my old MacBook</a>. When I sat down to build my accessibility app for Linux, I wanted a way to move information between my Linux/macOS MacBooks. <a href="https://linuxize.com/post/netcat-nc-command-with-examples/">Netcat</a> was the solution. What a great command-line tool.</li>
</ul>

<h2 id="accessibility-insights">Accessibility insights</h2>
<ul>
  <li>WebAIM recently published their <a href="https://webaim.org/projects/million/">2026 accessibility evaluation</a> of the top 1 Million websites. Unfortunately, this year’s news is bad. After gradual improvements in recent years, the latest analysis shows notable increases in errors/failures. They cite the likely source as frameworks and AI “vibe coding.” I concur.</li>
  <li>Are you in control of your focus indicators? Sara Soueidan is, and she has an <a href="https://www.sarasoueidan.com/blog/focus-indicators/">extensive article about it</a>, to help you make sure you do, too.</li>
</ul>

<h2 id="privacy-lockdown">Privacy lockdown</h2>
<ul>
  <li>Mastodon was recently awarded a <a href="https://blog.joinmastodon.org/2026/04/sovereign-tech-agency-funding/">giant service agreement</a> by the Sovereign Tech Fund. This will bring a number of needed improvements to the social media platform. The most exciting one is E2EE for direct messaging. This is long overdue and will massively improve the platform overall.</li>
  <li>A <a href="https://globalprivacyaudit.org/2026/california">California privacy audit</a> by webXray shows that Google, Microsoft, Meta all track you, even when you opt-out. The problem is they don’t care, because their data harvest gains far outweigh the fines.</li>
  <li>My friend Em published a comprehensive guide on keeping yourself safe if you’re an activist. It’s the <a href="https://www.privacyguides.org/en/activism/toolbox/">Activism Toolbox</a>, published on Privacy Guides.</li>
</ul>

<h2 id="tools-and-platforms">Tools and platforms</h2>
<ul>
  <li><a href="https://wakamaifondue.com/">Wakamai Fondue</a> is an incredible tool that parses variable fonts for you. It’s a mainstay for me. They just published a <a href="https://pixelambacht.nl/2026/a-new-wakamai-fondue/">massive update</a> with lots of improvements.</li>
  <li>I’m finding <a href="https://github.com/jordan-dalby/ByteStash">ByteStash</a> to be a savior. It enables me to catalog code snippets, then search/filter them. I’m searching my existing projects less often for “that one thing” I did one time. Instead, I’m retrieving it from my ByteStash (which I’m self-hosting).</li>
  <li>It’s not FOSS, but <a href="https://www.nocodb.com/">NocoDB</a> (as in no-code database) is the best replacement I’ve found for Airtable and Baserow. Both of the latter have let me down. So far, NocoDB is easier to use, more intuitive, and faster by far.</li>
</ul>

<h2 id="at-the-moment">At the moment</h2>
<p>Having finished my first edition of Nano Bytes, my focus is now on finishing my macOS music player app and porting my <a href="https://ratioapp.markwyner.com/">Ratio app</a> to Linux. More on my <a href="https://markwyner.omg.lol/now">now page</a>.</p>]]></content><author><name></name></author><category term="nano-bytes" /><summary type="html"><![CDATA[Photo by Mark Wyner The weekly curated list of things that bring me joy. Plus bytes on design, code, accessibility, privacy, and tools you might find useful. Available by email and RSS. This week’s goodies…]]></summary></entry></feed>