<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Posts on Scratch Pad</title>
    <link>https://solivagant.dev/posts/</link>
    <description>Recent content in Posts on Scratch Pad</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Sun, 25 May 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://solivagant.dev/posts/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Code Feels</title>
      <link>https://solivagant.dev/posts/feels/</link>
      <pubDate>Sun, 25 May 2025 00:00:00 +0000</pubDate>
      
      <guid>https://solivagant.dev/posts/feels/</guid>
      <description>&lt;p&gt;I worked at the same company for about ten years.
While I ended up working on many different systems,
there were a couple constants in the mix. It&amp;rsquo;s remarkable how
ingrained those codebases are in my head. Having started
a new job, I miss the ability to quickly know
&lt;em&gt;exactly&lt;/em&gt; where in the code needs to change to support
some new feature.&lt;/p&gt;
&lt;p&gt;This ability to navigate a codebase in your head feels
to me very much like navigating the physical world.
It feels almost like
walking through callgraphs and directory structures.
In a codebase I&amp;rsquo;m very familiar with, I can plop myself
down to exactly the right location and all paths from
there are clear. In a new codebase, I often need to start
from some few currently-known starting points and try
to navigate from there, trying to discover my
destination. I wonder if it&amp;rsquo;s the same for others.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;</description>
      <content>&lt;p&gt;I worked at the same company for about ten years.
While I ended up working on many different systems,
there were a couple constants in the mix. It&amp;rsquo;s remarkable how
ingrained those codebases are in my head. Having started
a new job, I miss the ability to quickly know
&lt;em&gt;exactly&lt;/em&gt; where in the code needs to change to support
some new feature.&lt;/p&gt;
&lt;p&gt;This ability to navigate a codebase in your head feels
to me very much like navigating the physical world.
It feels almost like
walking through callgraphs and directory structures.
In a codebase I&amp;rsquo;m very familiar with, I can plop myself
down to exactly the right location and all paths from
there are clear. In a new codebase, I often need to start
from some few currently-known starting points and try
to navigate from there, trying to discover my
destination. I wonder if it&amp;rsquo;s the same for others.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;ChatGPT tells me that there has been some research here
and thinking about code organization triggers
the parietal lobe, which is also used for physical
navigation. I don&amp;rsquo;t feel like determining if this is
a hallucination or fact, but it does align with my
feeling.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</content>
    </item>
    
    <item>
      <title>Converged Consensus</title>
      <link>https://solivagant.dev/posts/converged/</link>
      <pubDate>Sun, 09 Mar 2025 10:33:06 -0400</pubDate>
      
      <guid>https://solivagant.dev/posts/converged/</guid>
      <description>&lt;p&gt;A well known pattern for building systems is to break them down into
&lt;a href=&#34;https://docs.aws.amazon.com/whitepapers/latest/aws-fault-isolation-boundaries/control-planes-and-data-planes.html&#34;&gt;data planes and control planes&lt;/a&gt;.
Despite having known this and done this for years, I never considered this
distinction within log replication protocols, another thing I&amp;rsquo;ve thought about for years.
The data plane of a log replication protocol can just be concerned with failure-free data redundancy (e.g. replication or erasure coding).
The control plane is then concerned with handling and recovering from failures.
Raft is a &amp;lsquo;converged&amp;rsquo; protocol mixing both data plane and control plane
is one protocol and one log. But it doesn&amp;rsquo;t have to be that way.&lt;/p&gt;</description>
      <content>&lt;p&gt;A well known pattern for building systems is to break them down into
&lt;a href=&#34;https://docs.aws.amazon.com/whitepapers/latest/aws-fault-isolation-boundaries/control-planes-and-data-planes.html&#34;&gt;data planes and control planes&lt;/a&gt;.
Despite having known this and done this for years, I never considered this
distinction within log replication protocols, another thing I&amp;rsquo;ve thought about for years.
The data plane of a log replication protocol can just be concerned with failure-free data redundancy (e.g. replication or erasure coding).
The control plane is then concerned with handling and recovering from failures.
Raft is a &amp;lsquo;converged&amp;rsquo; protocol mixing both data plane and control plane
is one protocol and one log. But it doesn&amp;rsquo;t have to be that way.&lt;/p&gt;
&lt;p&gt;I think this is a nice framework to think about the variety of log replication prtocols out there.
Thanks to Jack Vanlightly for &lt;a href=&#34;https://jack-vanlightly.com/blog/2025/2/6/steady-on-separating-failure-free-ordering-from-fault-tolerant-consensus&#34;&gt;writing&lt;/a&gt; about this.
Check out his survey on the topic.&lt;/p&gt;
</content>
    </item>
    
  </channel>
</rss>
