<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Skeletor-Pirate</title>
    <description>The latest articles on DEV Community by Skeletor-Pirate (@skeletorpirate).</description>
    <link>https://dev.to/skeletorpirate</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4097276%2F56e9074b-b272-49ef-8497-fb825218ba0c.png</url>
      <title>DEV Community: Skeletor-Pirate</title>
      <link>https://dev.to/skeletorpirate</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/skeletorpirate"/>
    <language>en</language>
    <item>
      <title>Why We Need to Schedule Post-Quantum Cryptography Around the Weather</title>
      <dc:creator>Skeletor-Pirate</dc:creator>
      <pubDate>Thu, 27 Aug 2026 11:21:01 +0000</pubDate>
      <link>https://dev.to/skeletorpirate/why-we-need-to-schedule-post-quantum-cryptography-around-the-weather-2lhk</link>
      <guid>https://dev.to/skeletorpirate/why-we-need-to-schedule-post-quantum-cryptography-around-the-weather-2lhk</guid>
      <description>&lt;h1&gt;
  
  
  Why We Need to Schedule Post-Quantum Cryptography Around the Weather
&lt;/h1&gt;

&lt;p&gt;The security industry is undergoing one of the largest migrations in history: moving from classical cryptography (RSA/ECC) to &lt;strong&gt;Post-Quantum Cryptography (PQC)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;While algorithms like &lt;strong&gt;ML-KEM&lt;/strong&gt; (FIPS 203) are quantum-resistant, they have a hidden cost: they are &lt;strong&gt;CPU-intensive&lt;/strong&gt;. Compared to classical algorithms, key generation, signing, and verification consume significantly more compute.&lt;/p&gt;

&lt;p&gt;More compute = more electricity. For bulk operations (signing millions of docs, encrypting petabytes of backups), this spikes carbon footprint — bad for net-zero goals.&lt;/p&gt;

&lt;p&gt;What if we schedule these workloads to run &lt;strong&gt;only when the grid is cleanest&lt;/strong&gt;?&lt;/p&gt;

&lt;p&gt;Enter &lt;strong&gt;Quant Harvest&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  What is Quant Harvest?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Quant Harvest&lt;/strong&gt; is an open-source Go control plane — a carbon-aware deferred-execution queue for PQC workloads.&lt;/p&gt;

&lt;p&gt;Instead of executing heavy crypto immediately, it buffers workloads and monitors grid carbon intensity (gCO2e/kWh). Dirty grid (fossil) → pause queue. Clean grid (solar/wind) → resume and harvest.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                  ┌──────────────────────┐
                  │   Workload Enqueued  │
                  └──────────┬───────────┘
                             ▼
                  ┌──────────────────────┐
                  │    Task Buffered     │
                  └──────────┬───────────┘
                             ▼
               No  /───────────────────\
             ┌────/  Grid Clean enough? \
             │    \   (Under threshold) /
             │     \───────────────────/
             ▼               │ Yes
     ┌──────────────┐        ▼
     │ Queue Paused │ ┌──────────────┐
     └──────────────┘ │ Execute Task │
                      └──────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Try it live:&lt;/strong&gt; &lt;a href="https://quant-harvest.onrender.com" rel="noopener noreferrer"&gt;https://quant-harvest.onrender.com&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://quant-harvest.onrender.com/api/tasks &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Idempotency-Key: demo-123"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"name":"pqc-batch-signing","payload":"ml-kem-768"}'&lt;/span&gt;

&lt;span class="c"&gt;# Watch /api/status — when carbon &amp;gt;200 it defers, when &amp;lt;200 it runs&lt;/span&gt;
curl https://quant-harvest.onrender.com/api/status | jq
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Go stdlib + SQLite WAL&lt;/strong&gt; (&lt;code&gt;modernc.org/sqlite&lt;/code&gt; pure-Go driver) — busy timeouts, atomic claims, idempotency via &lt;code&gt;Idempotency-Key&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ticker scheduler&lt;/strong&gt; — polls every 15s, worker pool concurrency 2, threshold 200 gCO2e/kWh&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prometheus&lt;/strong&gt; — &lt;code&gt;/metrics&lt;/code&gt; (&lt;code&gt;qharvest_task_queue_size&lt;/code&gt;, &lt;code&gt;qharvest_carbon_intensity&lt;/code&gt;) + &lt;code&gt;/healthz&lt;/code&gt; &lt;code&gt;/readyz&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Operator console&lt;/strong&gt; at &lt;code&gt;/&lt;/code&gt; — real-time grid chart + queue + WAL logs (see live demo)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docker + Kubernetes&lt;/strong&gt; manifests in &lt;code&gt;deploy/&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="c"&gt;// pqc.go — integration boundary ready for ML-KEM&lt;/span&gt;
&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;EnvelopeIdentifier&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="kt"&gt;byte&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="m"&gt;32&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="kt"&gt;byte&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;sha256&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Sum256&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c"&gt;// placeholder for vetted ML-KEM/FIPS203&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  How logging looks
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;2026/08/15 12:01:45 Q-HARVEST listening on :8080
2026/08/15 12:02:00 scheduler: deferring queue at 270gCO2e/kWh
2026/08/15 12:02:15 scheduler: carbon intensity dropped to 145gCO2e/kWh
2026/08/15 12:02:15 scheduler: executing pqc-bulk-signing
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Why "harvest"?
&lt;/h2&gt;

&lt;p&gt;Green computing is usually "use less." Quant Harvest is "use &lt;strong&gt;when&lt;/strong&gt; clean." Same jobs, shifted to renewable windows — simplest decarbonization win for PQC migration.&lt;/p&gt;




&lt;h2&gt;
  
  
  Get involved
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/Skeletor-Pirate/quant-harvest" rel="noopener noreferrer"&gt;https://github.com/Skeletor-Pirate/quant-harvest&lt;/a&gt; — star + open issues on carbon data sources (ElectricityMap/WattTime)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Release v0.1.0:&lt;/strong&gt; &lt;a href="https://github.com/Skeletor-Pirate/quant-harvest/releases/tag/v0.1.0" rel="noopener noreferrer"&gt;https://github.com/Skeletor-Pirate/quant-harvest/releases/tag/v0.1.0&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Awesome-go PR:&lt;/strong&gt; &lt;a href="https://github.com/avelino/awesome-go/pull/6626" rel="noopener noreferrer"&gt;https://github.com/avelino/awesome-go/pull/6626&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Apache-2.0. If you're Go/DevOps/crypto, try the live demo and roast the scheduler logic!&lt;/p&gt;




</description>
    </item>
  </channel>
</rss>
