<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Stacknote Demo</title><link>https://stacknote.wanglong.cv/</link><description>Recent content on Stacknote Demo</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Mon, 24 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://stacknote.wanglong.cv/index.xml" rel="self" type="application/rss+xml"/><item><title>Welcome to Stacknote</title><link>https://stacknote.wanglong.cv/articles/welcome/</link><pubDate>Mon, 24 Aug 2026 00:00:00 +0000</pubDate><guid>https://stacknote.wanglong.cv/articles/welcome/</guid><description>&lt;p&gt;Stacknote is designed for technical writing that values clarity and character. It gives a personal engineering blog a recognizable visual voice without turning every page into a product landing page.&lt;/p&gt;&#10;&lt;h2 id="a-complete-reading-experience"&gt;A complete reading experience&lt;/h2&gt;&#10;&lt;p&gt;The reading page keeps the article at the center while still providing a table of contents, highlighted code, responsive tables, related articles, and strong keyboard focus states.&lt;/p&gt;&#10;&lt;div class="code-block"&gt;&#10; &lt;button class="code-block__copy" type="button" data-copy-code data-copied-label="Copied"&gt;Copy&lt;/button&gt;&#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;main&lt;/span&gt;() {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;fmt&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Println&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;field-tested notes&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;The same design carries through the homepage, archives, tags, search results, and author page. Local covers are processed by Hugo into responsive WebP variants, while articles without images keep a deliberate text-first layout.&lt;/p&gt;</description></item><item><title>Trace the Request Before You Tune the Service</title><link>https://stacknote.wanglong.cv/articles/request-path/</link><pubDate>Mon, 17 Aug 2026 00:00:00 +0000</pubDate><guid>https://stacknote.wanglong.cv/articles/request-path/</guid><description>&lt;p&gt;A slow endpoint is rarely one indivisible wait. It is a chain: connection setup, queueing, application work, storage, and the trip back to the caller. The useful question is not simply “why is this request slow?” but “where did this request spend its time?”&lt;/p&gt;&#10;&lt;h2 id="start-with-one-trace"&gt;Start with one trace&lt;/h2&gt;&#10;&lt;p&gt;Pick one real slow request and write down its stages before changing a timeout or adding a cache.&lt;/p&gt;&#10;&lt;div class="code-block"&gt;&#10; &lt;button class="code-block__copy" type="button" data-copy-code data-copied-label="Copied"&gt;Copy&lt;/button&gt;&#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gateway 18 ms&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;queue 142 ms&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;application 31 ms&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;database 24 ms&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;response 6 ms&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;The application function is not the bottleneck in this example. Making it twice as fast saves about 15 milliseconds while the request still waits 142 milliseconds before the function starts.&lt;/p&gt;</description></item><item><title>The Queue Is Part of Your API Contract</title><link>https://stacknote.wanglong.cv/articles/queue-contract/</link><pubDate>Mon, 10 Aug 2026 00:00:00 +0000</pubDate><guid>https://stacknote.wanglong.cv/articles/queue-contract/</guid><description>&lt;p&gt;Moving work behind a queue changes latency, ownership, and failure semantics. It does not make those concerns disappear.&lt;/p&gt;&#10;&lt;h2 id="acknowledgement-is-not-completion"&gt;Acknowledgement is not completion&lt;/h2&gt;&#10;&lt;p&gt;An HTTP &lt;code&gt;202 Accepted&lt;/code&gt; response says the server accepted responsibility for attempting the job. It should not imply that the job succeeded, or even that a worker has started it.&lt;/p&gt;&#10;&lt;p&gt;Clients need a durable job identifier and a status model they can understand:&lt;/p&gt;&#10;&lt;div class="code-block"&gt;&#10; &lt;button class="code-block__copy" type="button" data-copy-code data-copied-label="Copied"&gt;Copy&lt;/button&gt;&#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;job_id&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;job_7f31&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;state&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;queued&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;status_url&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;/jobs/job_7f31&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;h2 id="retries-create-duplicates"&gt;Retries create duplicates&lt;/h2&gt;&#10;&lt;p&gt;A worker can finish the side effect and crash before acknowledging the message. The queue then delivers the same message again. That is ordinary at-least-once delivery, not an exotic edge case.&lt;/p&gt;</description></item><item><title>Measure the Tail, Not Just the Average</title><link>https://stacknote.wanglong.cv/articles/tail-latency/</link><pubDate>Mon, 03 Aug 2026 00:00:00 +0000</pubDate><guid>https://stacknote.wanglong.cv/articles/tail-latency/</guid><description>&lt;p&gt;An average compresses a distribution into one comfortable number. Production latency is rarely comfortable or evenly distributed.&lt;/p&gt;&#10;&lt;p&gt;Suppose 99 requests finish in 40 milliseconds and one request takes four seconds. The average is about 80 milliseconds. That number describes almost nobody: most users saw half of it, while the unlucky user waited fifty times longer.&lt;/p&gt;&#10;&lt;h2 id="keep-the-distribution"&gt;Keep the distribution&lt;/h2&gt;&#10;&lt;p&gt;Track at least a few percentiles and request volume together:&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Metric&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: right"&gt;Value&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;P50&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;40 ms&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;P95&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;58 ms&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;P99&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;4.0 s&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Requests&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;100&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Percentiles also need enough samples. A P99 calculated from a tiny window is mostly a story about one request, so retain histograms and compare equivalent traffic windows.&lt;/p&gt;</description></item><item><title>A Small Checklist for Shipping Technical Notes</title><link>https://stacknote.wanglong.cv/articles/publishing-checklist/</link><pubDate>Mon, 27 Jul 2026 00:00:00 +0000</pubDate><guid>https://stacknote.wanglong.cv/articles/publishing-checklist/</guid><description>&lt;p&gt;A publishing checklist should be short enough to use every time. Mine asks five questions.&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Does the opening state the problem without requiring a page of background?&lt;/li&gt;&#10;&lt;li&gt;Do commands and code samples still run?&lt;/li&gt;&#10;&lt;li&gt;Do external claims link to the original source?&lt;/li&gt;&#10;&lt;li&gt;Does every informative image have useful alternative text?&lt;/li&gt;&#10;&lt;li&gt;Does the production build complete without warnings?&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;For a Hugo site, the final check can remain pleasantly boring:&lt;/p&gt;&#10;&lt;div class="code-block"&gt;&#10; &lt;button class="code-block__copy" type="button" data-copy-code data-copied-label="Copied"&gt;Copy&lt;/button&gt;&#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hugo --panicOnWarning --minify&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Preview the generated site at both narrow and wide viewport sizes. Long titles, tables, code blocks, and navigation labels expose layout assumptions faster than placeholder text ever will.&lt;/p&gt;</description></item><item><title>About</title><link>https://stacknote.wanglong.cv/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://stacknote.wanglong.cv/about/</guid><description>&lt;p&gt;I am Example Author, a software engineer who writes about systems that have survived contact with production.&lt;/p&gt;&#10;&lt;p&gt;Stacknote is designed for notes that combine practical experience with enough technical depth to remain useful after the week they were published. This example site demonstrates the theme&amp;rsquo;s article typography, navigation, search, archives, taxonomies, responsive covers, and structured metadata.&lt;/p&gt;&#10;&lt;p&gt;The name, role, biography, links, homepage sections, and article collection are all configured by the site rather than hard-coded into the theme.&lt;/p&gt;</description></item><item><title>Archive</title><link>https://stacknote.wanglong.cv/archives/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://stacknote.wanglong.cv/archives/</guid><description/></item><item><title>Search</title><link>https://stacknote.wanglong.cv/search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://stacknote.wanglong.cv/search/</guid><description/></item></channel></rss>