<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>A Quiet Blog</title>
  
  
  <link href="https://simple-is-awesome.github.io/hexo-theme-mies/atom.xml" rel="self"/>
  
  <link href="https://simple-is-awesome.github.io/hexo-theme-mies/"/>
  <updated>2026-07-13T12:02:03.082Z</updated>
  <id>https://simple-is-awesome.github.io/hexo-theme-mies/</id>
  
  <author>
    <name>Jia Kai</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>On simplicity</title>
    <link href="https://simple-is-awesome.github.io/hexo-theme-mies/2026/06/28/on-simplicity/"/>
    <id>https://simple-is-awesome.github.io/hexo-theme-mies/2026/06/28/on-simplicity/</id>
    <published>2026-06-28T10:30:00.000Z</published>
    <updated>2026-07-13T12:02:03.082Z</updated>
    
    <content type="html"><![CDATA[<p>Every element on a page competes for attention. The fewer there are, the more each one matters. That is the whole argument for minimalism — not austerity for its own sake, but focus.</p><span id="more"></span><blockquote><p>Less is more.<br>— Ludwig Mies van der Rohe</p></blockquote><p>A personal blog needs surprisingly little:</p><ul><li>a list of posts,</li><li>the posts themselves,</li><li>a way to find old ones,</li><li>and a way to know who wrote them.</li></ul><p>Everything beyond that is decoration. Decoration is not evil, but it should be a choice, not a default.</p><h2 id="What-gets-removed"><a href="#What-gets-removed" class="headerlink" title="What gets removed"></a>What gets removed</h2><p>No banners, no sidebars, no share buttons, no trackers. No JavaScript at all, actually. The page you are reading is HTML and one small stylesheet.</p><h2 id="What-stays"><a href="#What-stays" class="headerlink" title="What stays"></a>What stays</h2><p>Typography, whitespace, and a dark mode that follows your system — because reading at night is part of reading.</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;Every element on a page competes for attention. The fewer there are, the more each one matters. That is the whole argument for minimalism — not austerity for its own sake, but focus.&lt;/p&gt;</summary>
    
    
    
    <category term="essays" scheme="https://simple-is-awesome.github.io/hexo-theme-mies/categories/essays/"/>
    
    
    <category term="design" scheme="https://simple-is-awesome.github.io/hexo-theme-mies/tags/design/"/>
    
    <category term="writing" scheme="https://simple-is-awesome.github.io/hexo-theme-mies/tags/writing/"/>
    
  </entry>
  
  <entry>
    <title>Reading files in Rust, three ways</title>
    <link href="https://simple-is-awesome.github.io/hexo-theme-mies/2026/04/12/reading-files-in-rust/"/>
    <id>https://simple-is-awesome.github.io/hexo-theme-mies/2026/04/12/reading-files-in-rust/</id>
    <published>2026-04-12T21:15:00.000Z</published>
    <updated>2026-07-13T12:02:03.082Z</updated>
    
    <content type="html"><![CDATA[<p>Rust gives you several levels of control when reading a file. Here are the three I actually use.</p><span id="more"></span><h2 id="The-one-liner"><a href="#The-one-liner" class="headerlink" title="The one-liner"></a>The one-liner</h2><p>For small files, just slurp the whole thing:</p><figure class="highlight rust"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">use</span> std::fs;</span><br><span class="line"></span><br><span class="line"><span class="keyword">fn</span> <span class="title function_">main</span>() <span class="punctuation">-&gt;</span> std::io::<span class="type">Result</span>&lt;()&gt; &#123;</span><br><span class="line">    <span class="keyword">let</span> <span class="variable">contents</span> = fs::<span class="title function_ invoke__">read_to_string</span>(<span class="string">&quot;notes.txt&quot;</span>)?;</span><br><span class="line">    <span class="built_in">println!</span>(<span class="string">&quot;&#123;&#125; bytes&quot;</span>, contents.<span class="title function_ invoke__">len</span>());</span><br><span class="line">    <span class="title function_ invoke__">Ok</span>(())</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h2 id="Buffered-lines"><a href="#Buffered-lines" class="headerlink" title="Buffered lines"></a>Buffered lines</h2><p>For larger files, iterate line by line without loading everything:</p><figure class="highlight rust"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">use</span> std::fs::File;</span><br><span class="line"><span class="keyword">use</span> std::io::&#123;BufRead, BufReader&#125;;</span><br><span class="line"></span><br><span class="line"><span class="keyword">fn</span> <span class="title function_">main</span>() <span class="punctuation">-&gt;</span> std::io::<span class="type">Result</span>&lt;()&gt; &#123;</span><br><span class="line">    <span class="keyword">let</span> <span class="variable">file</span> = File::<span class="title function_ invoke__">open</span>(<span class="string">&quot;notes.txt&quot;</span>)?;</span><br><span class="line">    <span class="keyword">for</span> <span class="variable">line</span> <span class="keyword">in</span> BufReader::<span class="title function_ invoke__">new</span>(file).<span class="title function_ invoke__">lines</span>() &#123;</span><br><span class="line">        <span class="keyword">let</span> <span class="variable">line</span> = line?;</span><br><span class="line">        <span class="keyword">if</span> line.<span class="title function_ invoke__">starts_with</span>(<span class="string">&#x27;#&#x27;</span>) &#123;</span><br><span class="line">            <span class="keyword">continue</span>; <span class="comment">// skip comments</span></span><br><span class="line">        &#125;</span><br><span class="line">        <span class="built_in">println!</span>(<span class="string">&quot;&#123;line&#125;&quot;</span>);</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="title function_ invoke__">Ok</span>(())</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h2 id="Raw-bytes"><a href="#Raw-bytes" class="headerlink" title="Raw bytes"></a>Raw bytes</h2><p>And when the file is not text at all:</p><figure class="highlight rust"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">let</span> <span class="variable">bytes</span> = std::fs::<span class="title function_ invoke__">read</span>(<span class="string">&quot;image.png&quot;</span>)?;</span><br></pre></td></tr></table></figure><p>That covers <code>99%</code> of everyday needs. The remaining 1% is memory-mapped IO, which is a story for another post.</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;Rust gives you several levels of control when reading a file. Here are the three I actually use.&lt;/p&gt;</summary>
    
    
    
    <category term="notes" scheme="https://simple-is-awesome.github.io/hexo-theme-mies/categories/notes/"/>
    
    
    <category term="code" scheme="https://simple-is-awesome.github.io/hexo-theme-mies/tags/code/"/>
    
    <category term="rust" scheme="https://simple-is-awesome.github.io/hexo-theme-mies/tags/rust/"/>
    
  </entry>
  
  <entry>
    <title>Notes on web typography</title>
    <link href="https://simple-is-awesome.github.io/hexo-theme-mies/2025/11/03/notes-on-typography/"/>
    <id>https://simple-is-awesome.github.io/hexo-theme-mies/2025/11/03/notes-on-typography/</id>
    <published>2025-11-03T09:00:00.000Z</published>
    <updated>2026-07-13T12:02:03.082Z</updated>
    
    <content type="html"><![CDATA[<p>A few rules of thumb I keep coming back to when styling text for the web.</p><span id="more"></span><h2 id="Measure"><a href="#Measure" class="headerlink" title="Measure"></a>Measure</h2><p>Keep lines between 45 and 75 characters. On this site the content column is <code>42rem</code>, which lands around 70 characters for body text.</p><h2 id="Scale"><a href="#Scale" class="headerlink" title="Scale"></a>Scale</h2><p>You need far fewer sizes than you think:</p><table><thead><tr><th>Role</th><th>Size</th><th>Weight</th></tr></thead><tbody><tr><td>Post title</td><td>1.7rem</td><td>700</td></tr><tr><td>Section head</td><td>1.25rem</td><td>600</td></tr><tr><td>Body</td><td>1rem</td><td>400</td></tr><tr><td>Meta</td><td>0.88rem</td><td>400</td></tr></tbody></table><h2 id="Rhythm"><a href="#Rhythm" class="headerlink" title="Rhythm"></a>Rhythm</h2><p>Line height around <code>1.75</code> for body text, tighter (<code>1.3</code>) for headings. Whitespace between blocks should come from margins on one side only, or spacing collapses unpredictably.</p><h2 id="Color"><a href="#Color" class="headerlink" title="Color"></a>Color</h2><p>Pure black on pure white is harsh. Soften both a step: near-black <code>#1c1c1e</code> on white, or light gray <code>#d6d6d9</code> on near-black in dark mode.</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;A few rules of thumb I keep coming back to when styling text for the web.&lt;/p&gt;</summary>
    
    
    
    <category term="notes" scheme="https://simple-is-awesome.github.io/hexo-theme-mies/categories/notes/"/>
    
    
    <category term="design" scheme="https://simple-is-awesome.github.io/hexo-theme-mies/tags/design/"/>
    
    <category term="css" scheme="https://simple-is-awesome.github.io/hexo-theme-mies/tags/css/"/>
    
  </entry>
  
  <entry>
    <title>A week in Kyoto</title>
    <link href="https://simple-is-awesome.github.io/hexo-theme-mies/2025/05/19/a-week-in-kyoto/"/>
    <id>https://simple-is-awesome.github.io/hexo-theme-mies/2025/05/19/a-week-in-kyoto/</id>
    <published>2025-05-19T18:45:00.000Z</published>
    <updated>2026-07-13T12:02:03.082Z</updated>
    
    <content type="html"><![CDATA[<p>Seven days, one backpack, no itinerary. Some notes so I don’t forget.</p><span id="more"></span><p>The best mornings started before the crowds did. Fushimi Inari at 6 a.m. is a different mountain than Fushimi Inari at noon — just the sound of your own steps under a thousand gates.</p><p>Philosopher’s Path was quieter than expected for May. I walked it twice: once for the walk, once for the coffee shop I’d passed and regretted skipping.</p><p>Things I learned:</p><ol><li>Buy the bus day pass. Immediately.</li><li>Temples close earlier than you think.</li><li>Convenience store breakfast is not a compromise, it’s a feature.</li></ol><p>I left with the feeling that a week was both too long and not nearly enough, which is probably the sign of a good trip.</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;Seven days, one backpack, no itinerary. Some notes so I don’t forget.&lt;/p&gt;</summary>
    
    
    
    <category term="life" scheme="https://simple-is-awesome.github.io/hexo-theme-mies/categories/life/"/>
    
    
    <category term="travel" scheme="https://simple-is-awesome.github.io/hexo-theme-mies/tags/travel/"/>
    
  </entry>
  
  <entry>
    <title>Choosing tools you can ignore</title>
    <link href="https://simple-is-awesome.github.io/hexo-theme-mies/2024/12/08/choosing-tools/"/>
    <id>https://simple-is-awesome.github.io/hexo-theme-mies/2024/12/08/choosing-tools/</id>
    <published>2024-12-08T16:20:00.000Z</published>
    <updated>2026-07-13T12:02:03.082Z</updated>
    
    <content type="html"><![CDATA[<p>The best tool is the one you stop thinking about. My editor config hasn’t changed in two years, and that’s the highest praise I can give it.</p><span id="more"></span><p>There’s a trap in tinkering: the feeling of progress without the substance of it. A new terminal theme feels like work. A new keyboard layout feels like an investment. Mostly they’re neither — they’re a way to avoid the blank page.</p><p>So my rule now is boring: pick the default, use it until it actually hurts, and only then look for something better. The pain has to come first. Curiosity alone doesn’t count.</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;The best tool is the one you stop thinking about. My editor config hasn’t changed in two years, and that’s the highest praise I can give it.&lt;/p&gt;</summary>
    
    
    
    <category term="essays" scheme="https://simple-is-awesome.github.io/hexo-theme-mies/categories/essays/"/>
    
    
    <category term="code" scheme="https://simple-is-awesome.github.io/hexo-theme-mies/tags/code/"/>
    
    <category term="workflow" scheme="https://simple-is-awesome.github.io/hexo-theme-mies/tags/workflow/"/>
    
  </entry>
  
  <entry>
    <title>Hello, world</title>
    <link href="https://simple-is-awesome.github.io/hexo-theme-mies/2024/09/01/hello-world/"/>
    <id>https://simple-is-awesome.github.io/hexo-theme-mies/2024/09/01/hello-world/</id>
    <published>2024-09-01T12:00:00.000Z</published>
    <updated>2026-07-13T12:02:03.082Z</updated>
    
    <content type="html"><![CDATA[<p>Every blog starts with one of these, so let’s get it out of the way. This is where I’ll write about code, design, and whatever else survives the drafts folder.</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;Every blog starts with one of these, so let’s get it out of the way. This is where I’ll write about code, design, and whatever else survi</summary>
      
    
    
    
    <category term="life" scheme="https://simple-is-awesome.github.io/hexo-theme-mies/categories/life/"/>
    
    
    <category term="meta" scheme="https://simple-is-awesome.github.io/hexo-theme-mies/tags/meta/"/>
    
  </entry>
  
</feed>
