<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Technology on precomputing.com</title>
    <link>https://precomputing.com/tags/technology/</link>
    <description>Recent content in Technology on precomputing.com</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 29 Sep 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://precomputing.com/tags/technology/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Introduction</title>
      <link>https://precomputing.com/introduction/</link>
      <pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://precomputing.com/introduction/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Answers ready before you ask: one small language keeps counts, percentiles, candles, invoices and log dashboards current in a SQLite file as the data arrives.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Precomputing is a project to make answers cheap. A short policy names the streams of events you have and the answers you want ready, and says how long each level of detail should live. From then on every event updates those answers the moment it arrives, so a question becomes a lookup, and old detail fades on the schedule you set.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How It Works</title>
      <link>https://precomputing.com/how-it-works/</link>
      <pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://precomputing.com/how-it-works/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;The idea.&lt;/strong&gt; Decide the questions first. Keep their answers current as each event arrives, in one SQLite file, and let raw detail fade on a schedule while unusual events stay whole.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;before-and-after&#34;&gt;Before and After&lt;/h2&gt;&#xA;&lt;p&gt;Today a system that collects events usually keeps all of them and computes each answer when someone asks. A dashboard scans the last hour on every refresh. An invoice adds up a month of requests at the month&amp;rsquo;s end. Precomputing moves the work to the moment each event arrives:&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Policy Language</title>
      <link>https://precomputing.com/the-policy-language/</link>
      <pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://precomputing.com/the-policy-language/</guid>
      <description>&lt;p&gt;&lt;strong&gt;A policy is a short text file. It names the streams of events you have and the answers to keep ready, and says how long each level of detail survives.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;The compiler turns it into plain SQLite, and the Engine runs it as it is. This post walks through a policy line by line, and shows what each line becomes in the file.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://precomputing.com/images/policy-anatomy.png&#34; alt=&#34;A policy&amp;rsquo;s lines and the tables they become. raw keep 5m becomes latency_raw, whole events. Each rollup becomes rows of latency_win, one summary per window and key, and quantiles ms adds the sketch buckets in latency_ms_sk. samples becomes latency_sample, anomalies becomes latency_anomaly and latency_base, and each precompute becomes a view with its own name.&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Precomputing Explained: Keep a Running Total Instead of Counting Again</title>
      <link>https://precomputing.com/precomputing-explained-keep-a-running-total-instead-of-counting-again/</link>
      <pubDate>Tue, 29 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://precomputing.com/precomputing-explained-keep-a-running-total-instead-of-counting-again/</guid>
      <description>&lt;p&gt;A lot of software that collects data works like a shop owner with a shoebox. Every receipt goes in the box. When someone asks how much the shop sold today, she tips the box out and adds everything up, and if they ask again an hour later she does it all over again, with a bigger pile.&lt;/p&gt;&#xA;&lt;p&gt;Precomputing works like a notepad next to the till. Each sale is added to a running total the moment it happens, so a question gets answered by reading one number. Now and then the box can be emptied. She keeps only the odd receipts (a huge refund, a sale at 3 a.m.) in case someone asks about them later.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Inside the Engine: Same Answers, 12 to 17 Times Faster</title>
      <link>https://precomputing.com/inside-the-engine-same-answers-12-to-17-times-faster/</link>
      <pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://precomputing.com/inside-the-engine-same-answers-12-to-17-times-faster/</guid>
      <description>&lt;p&gt;The SQL runtime does all its work inside SQLite: every insert runs a trigger that updates every summary, sketch and answer the policy asks for. That is simple and it runs anywhere, but a trigger pays SQLite&amp;rsquo;s price for each small update. The Engine runs the same policy in Go, keeps the recent work in memory and writes what changed to the same SQLite file in one transaction at every checkpoint. Its answers are the same, to the last bit, and on Demo 2&amp;rsquo;s trades it is 12 to 17 times faster.&lt;/p&gt;</description>
    </item>
    <item>
      <title>One File: The SQLite Layout Both Runtimes Write</title>
      <link>https://precomputing.com/one-file-the-sqlite-layout-both-runtimes-write/</link>
      <pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://precomputing.com/one-file-the-sqlite-layout-both-runtimes-write/</guid>
      <description>&lt;p&gt;A Precomputing file is an ordinary SQLite file. Any SQLite tool opens it, the same SQL works on it whichever runtime wrote it, and it carries its own policy, so a reader never has to guess what is inside. This post walks through the layout for one stream.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-is-in-the-file&#34;&gt;What Is in the File&lt;/h2&gt;&#xA;&lt;p&gt;For Demo 1&amp;rsquo;s stream, &lt;code&gt;latency&lt;/code&gt;, with the key &lt;code&gt;endpoint&lt;/code&gt; and the value &lt;code&gt;ms&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://precomputing.com/images/file-layout.png&#34; alt=&#34;The file for the latency stream. You insert into the view latency and read the answer views requests, avg_ms and p99_ms. Behind them sit latency_raw with whole events, latency_win with one summary per window and key, latency_ms_sk with sketch buckets, latency_sample, latency_anomaly and latency_base, the state tables behind the answers, and three tables that describe the file: _precomputing with the policy, _precomputing_objects and, when the Engine writes, _precomputing_sources.&#34;&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
