<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated by build/generate-static.js from the BLOG_POSTS registry — do not edit by hand. -->
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>QANEN Blog</title>
    <link>https://qanen.site/blog</link>
    <atom:link href="https://qanen.site/feed.xml" rel="self" type="application/rss+xml"/>
    <description>Engineering deep-dives and the thinking behind QANEN's software — how we build useful, accessible, dependable technology.</description>
    <language>en</language>
    <lastBuildDate>Sun, 11 Oct 2026 11:57:00 GMT</lastBuildDate>
    <item>
      <title>Designing honest software: what a 'last verified' date teaches us about trust</title>
      <link>https://qanen.site/blog/designing-honest-software</link>
      <guid isPermaLink="true">https://qanen.site/blog/designing-honest-software</guid>
      <pubDate>Tue, 06 Oct 2026 00:00:00 GMT</pubDate>
      <author>QANEN Engineering</author>
      <category>Philosophy</category>
      <description>A calculator that gives you a number without showing its assumptions is a black box. Our PayPal Fee Calculator shows its source and a 'last verified' date — a small design choice that says a lot about what software owes its users.</description>
      <category>design</category>
      <category>trust</category>
      <category>transparency</category>
      <category>Tools Kit</category>
    </item>
    <item>
      <title>Adaptive concurrency: tuning a download engine that behaves itself</title>
      <link>https://qanen.site/blog/adaptive-concurrency-download-engine</link>
      <guid isPermaLink="true">https://qanen.site/blog/adaptive-concurrency-download-engine</guid>
      <pubDate>Fri, 02 Oct 2026 00:00:00 GMT</pubDate>
      <author>QANEN Engineering</author>
      <category>Performance</category>
      <description>Starting every download with the maximum number of parallel workers is a reliable way to get throttled. Our engine starts at four and climbs a 2 to 12 ladder based on real throughput — here is the reasoning, including the hysteresis that stops it oscillating.</description>
      <category>performance</category>
      <category>concurrency</category>
      <category>control systems</category>
      <category>YDM</category>
    </item>
    <item>
      <title>Why we compress images entirely in your browser</title>
      <link>https://qanen.site/blog/why-we-compress-images-in-the-browser</link>
      <guid isPermaLink="true">https://qanen.site/blog/why-we-compress-images-in-the-browser</guid>
      <pubDate>Mon, 28 Sep 2026 00:00:00 GMT</pubDate>
      <author>QANEN Engineering</author>
      <category>Architecture</category>
      <description>Most 'free' image compressors quietly upload your photos to a server. We built OptiSqueeze so not a single byte leaves your device — here is how WebAssembly makes that possible, and why it matters.</description>
      <category>privacy</category>
      <category>WebAssembly</category>
      <category>images</category>
      <category>OptiSqueeze</category>
    </item>
    <item>
      <title>How resumable downloads actually work</title>
      <link>https://qanen.site/blog/how-resumable-downloads-work</link>
      <guid isPermaLink="true">https://qanen.site/blog/how-resumable-downloads-work</guid>
      <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
      <author>QANEN Engineering</author>
      <category>Engineering</category>
      <description>A download that dies at 90% and starts from zero wastes your time and bandwidth. Here is the HTTP Range machinery, session persistence and disk-safety logic that let a downloader resume exactly where it stopped.</description>
      <category>downloads</category>
      <category>HTTP</category>
      <category>reliability</category>
      <category>YDM</category>
    </item>
    <item>
      <title>Clipboard detection without the creepiness</title>
      <link>https://qanen.site/blog/clipboard-detection-without-the-creepiness</link>
      <guid isPermaLink="true">https://qanen.site/blog/clipboard-detection-without-the-creepiness</guid>
      <pubDate>Sat, 12 Sep 2026 00:00:00 GMT</pubDate>
      <author>QANEN Engineering</author>
      <category>Engineering</category>
      <description>An app that watches your clipboard can be genuinely helpful or quietly invasive. The difference is consent, transparency and an easy off switch. Here is how we add 'copy a link and go' without becoming spyware.</description>
      <category>clipboard</category>
      <category>UX</category>
      <category>privacy</category>
      <category>YDM</category>
    </item>
    <item>
      <title>What 'works offline' actually requires</title>
      <link>https://qanen.site/blog/what-works-offline-actually-requires</link>
      <guid isPermaLink="true">https://qanen.site/blog/what-works-offline-actually-requires</guid>
      <pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate>
      <author>QANEN Engineering</author>
      <category>Architecture</category>
      <description>'Works offline' sounds like a checkbox but it is an architecture decision. Here is what has to be true for a web tool to keep working when the network does not — moving the compute to the client, caching what you need before you need it, and a service worker as the switchboard.</description>
      <category>offline</category>
      <category>service workers</category>
      <category>caching</category>
      <category>OptiSqueeze</category>
    </item>
    <item>
      <title>Stream copy, not re-encode: why we never touch your video's pixels</title>
      <link>https://qanen.site/blog/stream-copy-not-re-encode</link>
      <guid isPermaLink="true">https://qanen.site/blog/stream-copy-not-re-encode</guid>
      <pubDate>Sun, 30 Aug 2026 00:00:00 GMT</pubDate>
      <author>QANEN Engineering</author>
      <category>Engineering</category>
      <description>Every time a tool re-encodes a video it throws away detail forever. When we merge a separate video and audio stream we use stream copy instead — here is what that means for quality, speed and your CPU.</description>
      <category>video</category>
      <category>codecs</category>
      <category>ffmpeg</category>
      <category>YDM</category>
    </item>  </channel>
</rss>
