<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://quiet.hjadmz.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://quiet.hjadmz.com/" rel="alternate" type="text/html" hreflang="en" /><updated>2026-08-20T23:53:07+00:00</updated><id>https://quiet.hjadmz.com/feed.xml</id><title type="html">quiet</title><subtitle>a live demo of quiet, a minimal Jekyll blog template.</subtitle><author><name>hjadmz</name></author><entry><title type="html">in praise of quiet software</title><link href="https://quiet.hjadmz.com/2026/in-praise-of-quiet-software/" rel="alternate" type="text/html" title="in praise of quiet software" /><published>2026-08-18T00:00:00+00:00</published><updated>2026-08-18T00:00:00+00:00</updated><id>https://quiet.hjadmz.com/2026/in-praise-of-quiet-software</id><content type="html" xml:base="https://quiet.hjadmz.com/2026/in-praise-of-quiet-software/"><![CDATA[<p>There’s a kind of software I keep coming back to, and it took me a while
to name what it has in common. It isn’t minimalism, exactly — some of it
is dense with capability. It isn’t beauty in the screenshot sense; some
of it looks almost plain. The word I keep landing on is <em>quiet</em>.</p>

<p>Quiet software doesn’t perform for you. It doesn’t celebrate when you
complete a task you didn’t want to do in the first place. It doesn’t
interrupt to ask how it’s doing. It sits still until you reach for it,
does the thing, and gets out of the way. The experience afterward is
strange and rare: you remember the work, not the tool.</p>

<p>Dieter Rams said good design is as little design as possible, and the
line gets quoted so often it’s become furniture. But the second half of
the sentence is the part that matters: <em>because it concentrates on the
essential aspects</em>. Less isn’t the goal. Less is what’s left over when
you refuse to ship anything that doesn’t serve the person using it.</p>

<h2 id="attention-is-the-budget">attention is the budget</h2>

<p>Every interface spends its user’s attention, and most spend it like it’s
free. A badge here, a nudge there, a “we’ve updated our look!” modal on
a Tuesday. Each one is small. Together they’re a tax on the exact
resource the software was supposed to protect — the user’s ability to
think about their own work.</p>

<p>The economics explain it. Attention captured is revenue measured, so the
loudest patterns win A/B tests even when they lose users’ trust. Nobody
ships a growth chart labeled “interruptions people forgave us for.” But
forgiveness runs out silently, and when it does, people don’t file a
complaint. They just leave, and they can’t quite say why.</p>

<p>Quiet software inverts the budget. It treats every demand on attention
as a cost to be justified, the way an engineer treats memory or latency.
Does this notification serve the reader, or the metric? Does this
animation communicate state, or decorate a delay? Run that audit
honestly and most interfaces lose half their weight — and nothing of
value goes with it.</p>

<h2 id="boring-on-purpose">boring on purpose</h2>

<p>The highest compliment I can pay a tool is that it’s boring in a good
way. The file syncs. The text saves. The page loads before you notice it
loading. Boring means the surprises are gone, and surprise is exactly
what you don’t want from infrastructure.</p>

<p>Getting to boring is brutally hard work. It means saying no to features
that would demo well. It means spending a week on a failure case one
user in a thousand will hit. It means the craftsmanship is invisible
almost by definition — effort you can only detect by noticing that
nothing ever goes wrong.</p>

<p>That’s why quiet is a discipline, not an aesthetic. You can’t add quiet
at the end the way you’d add a coat of paint. It has to be the default
answer to every question along the way: <em>no, unless it earns its place.</em></p>

<h2 id="what-this-costs">what this costs</h2>

<p>I want to be honest about the trade. Quiet software is harder to market,
because restraint doesn’t screenshot. It grows slower, because it
refuses the loops that make growth charts steep. Building it is a bet
that respect compounds — that the person you didn’t interrupt today is
the person who’s still with you in ten years, and who brought a friend.</p>

<p>I think the bet is right. The tools that have lasted decades — the ones
people defend with real feeling — are almost all quiet ones. Nobody
loves a dashboard. People love the pen that always writes.</p>

<p>This blog is a small attempt to practice what it praises: text, set
carefully, served fast, asking nothing of you but your reading. If you
noticed the design, I have work to do. If you didn’t — good. That was
the point.</p>]]></content><author><name>hjadmz</name></author><summary type="html"><![CDATA[the best tools disappear while you use them. why is so little software built that way?]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://quiet.hjadmz.com/assets/img/og-default.png" /><media:content medium="image" url="https://quiet.hjadmz.com/assets/img/og-default.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">everything a post can do</title><link href="https://quiet.hjadmz.com/2026/everything-a-post-can-do/" rel="alternate" type="text/html" title="everything a post can do" /><published>2026-08-16T00:00:00+00:00</published><updated>2026-08-18T00:00:00+00:00</updated><id>https://quiet.hjadmz.com/2026/everything-a-post-can-do</id><content type="html" xml:base="https://quiet.hjadmz.com/2026/everything-a-post-can-do/"><![CDATA[<p>This post exercises every element the template knows how to render.
Keep it around as a reference while writing, or delete it with the other
demo posts when you’re ready.</p>

<h2 id="text">Text</h2>

<p>Body text is set on a fluid scale — 17px on phones easing to 19px on
large screens — with a measure of about 66 characters, which is where
long-form reading is most comfortable. Links are <a href="#text">always underlined</a>,
emphasis comes in <em>italic</em> and <strong>bold</strong>, and inline code looks like
<code class="language-plaintext highlighter-rouge">const reader = "first"</code>.</p>

<p>Straight quotes become “smart” quotes automatically, dashes work — like
this — and footnotes land at the bottom of the page with a way back.<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup></p>

<h3 id="headings-get-anchors">Headings get anchors</h3>

<p>Hover any heading (or focus it with the keyboard) and a quiet <code class="language-plaintext highlighter-rouge">#</code>
appears — a shareable deep link to that section, generated at build
time with no JavaScript.</p>

<h4 id="down-to-level-four">Down to level four</h4>

<p>Level-four headings share the body size and rely on weight alone.
Deeper nesting than this is usually a sign the post wants to be two posts.</p>

<h2 id="lists">Lists</h2>

<p>An unordered list:</p>

<ul>
  <li>everything it needs</li>
  <li>nothing it doesn’t</li>
  <li>set in type that gets out of the way</li>
</ul>

<p>And an ordered one:</p>

<ol>
  <li>function — does it work?</li>
  <li>convenience — does it remove friction?</li>
  <li>aesthetics — does it create a meaningful experience?</li>
</ol>

<h2 id="a-table">A table</h2>

<p>Tables get minimal horizontal rules and tabular figures, and scroll
sideways on small screens instead of breaking the page.</p>

<table>
  <thead>
    <tr>
      <th>year</th>
      <th style="text-align: right">posts</th>
      <th style="text-align: right">words</th>
      <th style="text-align: right">longest read</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>2024</td>
      <td style="text-align: right">12</td>
      <td style="text-align: right">14,320</td>
      <td style="text-align: right">11 min</td>
    </tr>
    <tr>
      <td>2025</td>
      <td style="text-align: right">18</td>
      <td style="text-align: right">22,847</td>
      <td style="text-align: right">9 min</td>
    </tr>
    <tr>
      <td>2026</td>
      <td style="text-align: right">7</td>
      <td style="text-align: right">9,105</td>
      <td style="text-align: right">14 min</td>
    </tr>
  </tbody>
</table>

<h2 id="code">Code</h2>

<p>Three languages, one restrained palette per theme. Every block gets a
copy button (keyboard-operable, announces “copied”) — unless JavaScript
is off, in which case the button simply doesn’t exist.</p>

<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// counts words the way the reading-time meta line does</span>
<span class="kd">function</span> <span class="nx">readingTime</span><span class="p">(</span><span class="nx">text</span><span class="p">,</span> <span class="nx">wpm</span> <span class="o">=</span> <span class="mi">220</span><span class="p">)</span> <span class="p">{</span>
  <span class="kd">const</span> <span class="nx">words</span> <span class="o">=</span> <span class="nx">text</span><span class="p">.</span><span class="nx">trim</span><span class="p">().</span><span class="nx">split</span><span class="p">(</span><span class="sr">/</span><span class="se">\s</span><span class="sr">+/</span><span class="p">).</span><span class="nx">length</span><span class="p">;</span>
  <span class="k">return</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">max</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">ceil</span><span class="p">(</span><span class="nx">words</span> <span class="o">/</span> <span class="nx">wpm</span><span class="p">));</span>
<span class="p">}</span>
</code></pre></div></div>

<div class="language-css highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">/* the entire theming system is custom properties */</span>
<span class="nd">:root</span> <span class="p">{</span>
  <span class="py">--bg</span><span class="p">:</span> <span class="n">oklch</span><span class="p">(</span><span class="m">98%</span> <span class="m">0.004</span> <span class="m">85</span><span class="p">);</span>
  <span class="py">--fg</span><span class="p">:</span> <span class="n">oklch</span><span class="p">(</span><span class="m">22%</span> <span class="m">0.005</span> <span class="m">85</span><span class="p">);</span>
  <span class="py">--accent</span><span class="p">:</span> <span class="n">oklch</span><span class="p">(</span><span class="m">52%</span> <span class="m">0.1</span> <span class="m">250</span><span class="p">);</span>
<span class="p">}</span>
</code></pre></div></div>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># preview locally without installing anything (see README for Codespaces)</span>
bundle <span class="nb">exec </span>jekyll serve <span class="nt">--livereload</span>
</code></pre></div></div>

<h2 id="an-image-with-a-caption">An image, with a caption</h2>

<p>Images declare their dimensions so the page never shifts while loading,
and lazy-load below the fold.</p>

<figure>
  <img src="/assets/img/demo-figure.png" alt="A simple compositional study: a small dark square resting on a warm off-white field, positioned slightly above center." width="1200" height="675" loading="lazy" />
  <figcaption>The pattern to copy: a figure, real alt text, explicit dimensions, a caption.</figcaption>
</figure>

<h2 id="a-quote">A quote</h2>

<blockquote>
  <p>Good design is as little design as possible. Less, but better — because
it concentrates on the essential aspects, and the products are not
burdened with non-essentials.</p>
</blockquote>

<p>A horizontal rule, for when a section break is quieter than a heading:</p>

<hr />

<p>That’s everything. If it isn’t on this page, the template doesn’t style
it — and that’s on purpose.<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">2</a></sup></p>

<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:1" role="doc-endnote">
      <p>And here it is. The return arrow takes you back to exactly where
you left off, and the target is highlighted so the jump is never
disorienting. <a href="#fnref:1" class="reversefootnote" role="doc-backlink">&#8617;&#xfe0e;</a></p>
    </li>
    <li id="fn:2" role="doc-endnote">
      <p>If you add elements of your own, this page is also your visual
regression test: one glance tells you if something broke. <a href="#fnref:2" class="reversefootnote" role="doc-backlink">&#8617;&#xfe0e;</a></p>
    </li>
  </ol>
</div>]]></content><author><name>hjadmz</name></author><summary type="html"><![CDATA[every element this template styles, on one page — a reference for writers and a regression test for tinkerers.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://quiet.hjadmz.com/assets/img/og-default.png" /><media:content medium="image" url="https://quiet.hjadmz.com/assets/img/og-default.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">hello, world</title><link href="https://quiet.hjadmz.com/2026/hello-world/" rel="alternate" type="text/html" title="hello, world" /><published>2026-08-14T00:00:00+00:00</published><updated>2026-08-14T00:00:00+00:00</updated><id>https://quiet.hjadmz.com/2026/hello-world</id><content type="html" xml:base="https://quiet.hjadmz.com/2026/hello-world/"><![CDATA[<p>This is a blog built with <a href="https://github.com/hjadmz/quiet">quiet</a> —
a template with everything it needs and nothing it doesn’t.</p>

<p>There are no trackers here, no cookie banner, no comment counters asking
to be looked at. Just text, set carefully, that loads fast and reads well
on anything with a screen.</p>

<p>If you’re reading this on your own fork: welcome. Delete the demo posts
in <code class="language-plaintext highlighter-rouge">_posts/</code>, edit <code class="language-plaintext highlighter-rouge">_config.yml</code>, and write. That’s the whole workflow.</p>]]></content><author><name>hjadmz</name></author><summary type="html"><![CDATA[a first post, and a small promise about what this place is for.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://quiet.hjadmz.com/assets/img/og-default.png" /><media:content medium="image" url="https://quiet.hjadmz.com/assets/img/og-default.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>