Skip to content

Commit 52d0a0c

Browse files
reference fix
1 parent 547eaf2 commit 52d0a0c

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

content/posts/information_chaining_part_1.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ We know that we can insert elements into a Bloom filter and then check, in a spa
7676

7777
## Encoding data into a Bloom filter
7878

79-
How might we encode an entire sequence of symbols into a Bloom filter? A natural first attempt might be to *insert each symbol* of the sequence into the Bloom filter. But that alone doesn’t capture order or repetition. A second idea could be to insert each symbol *together with its index position*. That’s better, but not enough. Because Bloom filters are probabilistic, collisions will occur: depending on the false positive rate and bit size, several symbols might appear to belong to the same position. Without prior knowledge of the input distribution, we couldn’t reliably recover the original message. No, we need something different. Something cleaner.
79+
How might we encode an entire sequence of symbols into a Bloom filter? A natural first attempt might be to insert each symbol of the sequence into the Bloom filter. But that alone doesn’t capture order or repetition. A second idea could be to insert each symbol together with its index position. That’s better, but not enough. Because Bloom filters are probabilistic, collisions will occur: depending on the false positive rate and bit size, several symbols might appear to belong to the same position. Without prior knowledge of the input distribution, we couldn’t reliably recover the original message. No, we need something different. Something cleaner.
8080

8181
To keep things simple, let’s treat each bit of the original message as a separate symbol (We’ll deal with multi-bit symbols later). Now, in all Bloom filter variants, one thing is constant: each lookup is independent. If we inserted symbols along with their index positions, checking whether the bit at position $N$ is present would tell us nothing about the bit at position $N + 1$. But what if we could turn those independent probabilities into conditional probabilities? *What if we "chain" the insertions*? This simple realization is the seed for Information Chaining.
8282

@@ -255,7 +255,7 @@ If you enjoyed this post, consider sharing it with others who might find it valu
255255
If you’d like to reference this article in your own research or writing, please cite it as follows:
256256

257257
> **Lum Ramabaja (2026).** *Let It Bloom: The Seeds of Information Chaining (Part 1).*
258-
> Open Cybernetics Blog. [https://lumramabaja.com/post/information_chaining_part_1/](https://lumramabaja.com/post/information_chaining_part_1/)
258+
> Open Cybernetics Blog. [https://lumramabaja.com/posts/let-it-bloom-the-seeds-of-information-chaining-part-1/](https://lumramabaja.com/posts/let-it-bloom-the-seeds-of-information-chaining-part-1/)
259259
260260
You can also cite it in **BibTeX** format:
261261

@@ -265,7 +265,7 @@ You can also cite it in **BibTeX** format:
265265
author = {Ramabaja, Lum},
266266
year = {2026},
267267
journal = {Open Cybernetics Blog},
268-
url = {https://lumramabaja.com/post/information_chaining_part_1/}
268+
url = {https://lumramabaja.com/posts/let-it-bloom-the-seeds-of-information-chaining-part-1/}
269269
}
270270
{{< /highlight >}}
271271

docs/posts/let-it-bloom-the-seeds-of-information-chaining-part-1/index.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ <h1 id="bloom-filters">Bloom Filters <a href="#bloom-filters" class="anchor">
225225

226226
<h1 id="the-seeds-of-information-chaining">The Seeds of Information Chaining <a href="#the-seeds-of-information-chaining" class="anchor">🔗</a></h1><p>Let us now tinker.</p>
227227
<p>We know that we can insert elements into a Bloom filter and then check, in a space-efficient way, whether an element <em>might</em> be in it. These cheap lookups are used everywhere, in databases (LSM trees), in set reconciliation, in the Bitcoin protocol, in genomics (k-mer lookups), and more. But what if we go beyond space-efficient <em>lookups</em>? What if we could not only verify the absence of elements via Bloom filters, but also store data within them, effectively encoding information into a Bloom filter, and later decoding it back to its original form? Why would we even want to do that? For now, let’s not worry about the <em>why</em>. We’re just tinkering. The <em>why</em> will reveal itself soon.</p>
228-
<h2 id="encoding-data-into-a-bloom-filter">Encoding data into a Bloom filter <a href="#encoding-data-into-a-bloom-filter" class="anchor">🔗</a></h2><p>How might we encode an entire sequence of symbols into a Bloom filter? A natural first attempt might be to <em>insert each symbol</em> of the sequence into the Bloom filter. But that alone doesn’t capture order or repetition. A second idea could be to insert each symbol <em>together with its index position</em>. That’s better, but not enough. Because Bloom filters are probabilistic, collisions will occur: depending on the false positive rate and bit size, several symbols might appear to belong to the same position. Without prior knowledge of the input distribution, we couldn’t reliably recover the original message. No, we need something different. Something cleaner.</p>
228+
<h2 id="encoding-data-into-a-bloom-filter">Encoding data into a Bloom filter <a href="#encoding-data-into-a-bloom-filter" class="anchor">🔗</a></h2><p>How might we encode an entire sequence of symbols into a Bloom filter? A natural first attempt might be to insert each symbol of the sequence into the Bloom filter. But that alone doesn’t capture order or repetition. A second idea could be to insert each symbol together with its index position. That’s better, but not enough. Because Bloom filters are probabilistic, collisions will occur: depending on the false positive rate and bit size, several symbols might appear to belong to the same position. Without prior knowledge of the input distribution, we couldn’t reliably recover the original message. No, we need something different. Something cleaner.</p>
229229
<p>To keep things simple, let’s treat each bit of the original message as a separate symbol (We’ll deal with multi-bit symbols later). Now, in all Bloom filter variants, one thing is constant: each lookup is independent. If we inserted symbols along with their index positions, checking whether the bit at position $N$ is present would tell us nothing about the bit at position $N + 1$. But what if we could turn those independent probabilities into conditional probabilities? <em>What if we &ldquo;chain&rdquo; the insertions</em>? This simple realization is the seed for Information Chaining.</p>
230230
<p>Let’s walk through <em>Code Example 2</em> to understand how encoding works in a Bloom filter–based Information Chaining implementation. Imagine a state machine with an initial state, a <em>nonce</em>, which could be a random value, a counter, an empty state, or something derived from a public key. We’ll refer to the current state of this machine as the chain header. For simplicity, we’ll treat it as a <code>usize</code> for now; later, we’ll explore how its type influences performance and behavior. We then iterate over the message and perform the following steps:</p>
231231
<ol>
@@ -1012,15 +1012,15 @@ <h1 id="how-to-cite-this-work">How to Cite This Work <a href="#how-to-cite-this-
10121012
<p>If you’d like to reference this article in your own research or writing, please cite it as follows:</p>
10131013
<blockquote>
10141014
<p><strong>Lum Ramabaja (2026).</strong> <em>Let It Bloom: The Seeds of Information Chaining (Part 1).</em><br>
1015-
Open Cybernetics Blog. <a href="https://lumramabaja.com/post/information_chaining_part_1/" target="_blank" rel="noopener">https://lumramabaja.com/post/information_chaining_part_1/</a></p>
1015+
Open Cybernetics Blog. <a href="https://lumramabaja.com/posts/let-it-bloom-the-seeds-of-information-chaining-part-1/" target="_blank" rel="noopener">https://lumramabaja.com/posts/let-it-bloom-the-seeds-of-information-chaining-part-1/</a></p>
10161016
</blockquote>
10171017
<p>You can also cite it in <strong>BibTeX</strong> format:</p>
10181018
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bibtex" data-lang="bibtex"><span style="display:flex;"><span><span style="color:#50fa7b">@article</span>{<span style="color:#8be9fd;font-style:italic">ramabaja2025informationchaining1</span>,
10191019
</span></span><span style="display:flex;"><span> <span style="color:#50fa7b">title</span> = <span style="color:#f1fa8c">{Let It Bloom: The Seeds of Information Chaining (Part 1)}</span>,
10201020
</span></span><span style="display:flex;"><span> <span style="color:#50fa7b">author</span> = <span style="color:#f1fa8c">{Ramabaja, Lum}</span>,
10211021
</span></span><span style="display:flex;"><span> <span style="color:#50fa7b">year</span> = <span style="color:#f1fa8c">{2026}</span>,
10221022
</span></span><span style="display:flex;"><span> <span style="color:#50fa7b">journal</span> = <span style="color:#f1fa8c">{Open Cybernetics Blog}</span>,
1023-
</span></span><span style="display:flex;"><span> <span style="color:#50fa7b">url</span> = <span style="color:#f1fa8c">{https://lumramabaja.com/post/information_chaining_part_1/}</span>
1023+
</span></span><span style="display:flex;"><span> <span style="color:#50fa7b">url</span> = <span style="color:#f1fa8c">{https://lumramabaja.com/posts/let-it-bloom-the-seeds-of-information-chaining-part-1/}</span>
10241024
</span></span><span style="display:flex;"><span>}</span></span></code></pre></div>
10251025
</div>
10261026

0 commit comments

Comments
 (0)