<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="default.xsl"?>
<fr:tree
toc="true"
numbered="true"
show-heading="true"
show-metadata="true"
expanded="true"
root="false"
xmlns:fr="http://www.jonmsterling.com/jms-005P.xml"><fr:frontmatter><fr:anchor>318</fr:anchor><fr:addr>index</fr:addr><fr:route>index.xml</fr:route><fr:title>Chris Jensen's Forest</fr:title><fr:authors /></fr:frontmatter><fr:mainmatter><fr:p>
  I am a distributed systems researcher, focusing specifically on simplifying the underlying protocols for strongly consistent distributed databases.
</fr:p>
 
 <fr:tree
toc="false"
numbered="true"
show-heading="true"
show-metadata="false"
expanded="false"
root="false"
xmlns:fr="http://www.jonmsterling.com/jms-005P.xml"><fr:frontmatter><fr:anchor>241</fr:anchor><fr:addr>cjj39-0005</fr:addr><fr:route>cjj39-0005.xml</fr:route><fr:title>Consensus</fr:title><fr:date><fr:year>2024</fr:year><fr:month>7</fr:month><fr:day>14</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="cjj39.xml"
addr="cjj39"
title="Chris Jensen">Chris Jensen</fr:link></fr:author></fr:authors></fr:frontmatter><fr:mainmatter><fr:tree
toc="true"
numbered="true"
show-heading="true"
show-metadata="false"
expanded="false"
root="false"
xmlns:fr="http://www.jonmsterling.com/jms-005P.xml"><fr:frontmatter><fr:anchor>167</fr:anchor><fr:addr>cjj39-0001</fr:addr><fr:route>cjj39-0001.xml</fr:route><fr:title>$F+1$ systems are all you need</fr:title><fr:taxon>Article</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>7</fr:month><fr:day>13</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="cjj39.xml"
addr="cjj39"
title="Chris Jensen">Chris Jensen</fr:link></fr:author></fr:authors></fr:frontmatter><fr:mainmatter><fr:p>
  Currently consensus requires 2f+1 at least for consensus.
  Unless you require 100% uptime, this is unnecessary and consensus can instead function on F+1 replicas.
</fr:p><fr:tree
toc="true"
numbered="true"
show-heading="true"
show-metadata="false"
expanded="true"
root="false"
xmlns:fr="http://www.jonmsterling.com/jms-005P.xml"><fr:frontmatter><fr:anchor>169</fr:anchor><fr:addr>cjj39-0002</fr:addr><fr:route>cjj39-0002.xml</fr:route><fr:title>Failure and recovery in $f+1$ and vertical paxos</fr:title><fr:taxon>Remark</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>7</fr:month><fr:day>14</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="cjj39.xml"
addr="cjj39"
title="Chris Jensen">Chris Jensen</fr:link></fr:author></fr:authors></fr:frontmatter><fr:mainmatter><fr:p>
  Supposing the standard approach of VerticalPaxos and an external configuration manager.

  Here failure of any node blocks the cluster, since it is not failure masking.
</fr:p><fr:tree
toc="true"
numbered="true"
show-heading="true"
show-metadata="false"
expanded="true"
root="false"
xmlns:fr="http://www.jonmsterling.com/jms-005P.xml"><fr:frontmatter><fr:anchor>171</fr:anchor><fr:addr>cjj39-0003</fr:addr><fr:route>cjj39-0003.xml</fr:route><fr:title>Configuration manager is strictly weaker than SMR and consensus</fr:title><fr:taxon>Hypothesis</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>7</fr:month><fr:day>14</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="cjj39.xml"
addr="cjj39"
title="Chris Jensen">Chris Jensen</fr:link></fr:author></fr:authors></fr:frontmatter><fr:mainmatter><fr:p>
  Looking at FLP result and verticalpaxos consider the following system.
</fr:p><fr:p>
  Each config replica maintains an infinite array of configuration, and counter for virtual synchronous leases.
  A reconfiguration manager contacts a majority of replicas, proposing a virtually synchronous lease for it.
  Each config replica only provides the lease if it is the highest so far.  

  Once receiving the lease, the RM reconfigures, then writes into the array at the index of the lease the new configuration.

  Reading the newest configuration is simply reading a majority of replicas and then using the highest configuration.
</fr:p><fr:p>
  The question is whether this is FLP avoiding, similar to read-write registers.
</fr:p></fr:mainmatter><fr:backmatter /></fr:tree></fr:mainmatter><fr:backmatter /></fr:tree><fr:tree
toc="true"
numbered="true"
show-heading="true"
show-metadata="false"
expanded="true"
root="false"
xmlns:fr="http://www.jonmsterling.com/jms-005P.xml"><fr:frontmatter><fr:anchor>173</fr:anchor><fr:addr>cjj39-0004</fr:addr><fr:route>cjj39-0004.xml</fr:route><fr:title>What is the simplest to run configuration manager?</fr:title><fr:taxon>Remark</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>7</fr:month><fr:day>14</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="cjj39.xml"
addr="cjj39"
title="Chris Jensen">Chris Jensen</fr:link></fr:author></fr:authors></fr:frontmatter><fr:mainmatter><fr:p>
  One important point in VerticalPaxos is that the configuration manager only need to be able to provide the current configuration, and to provide monotonically increasing configurations where each one knows of all lower ones.
</fr:p><fr:p>
  The simplest automated form of this is just a single oracle server.
</fr:p><fr:p>
  However in practise the actual simplest form of this is just a single human brain.

  Supposing that this user is the only user of the system, then we can use an F+1 configuration, with manual reconfiguration whenever a replica fails.
</fr:p></fr:mainmatter><fr:backmatter /></fr:tree></fr:mainmatter><fr:backmatter /></fr:tree><fr:tree
toc="true"
numbered="true"
show-heading="true"
show-metadata="false"
expanded="false"
root="false"
xmlns:fr="http://www.jonmsterling.com/jms-005P.xml"><fr:frontmatter><fr:anchor>175</fr:anchor><fr:addr>cjj39-000L</fr:addr><fr:route>cjj39-000L.xml</fr:route><fr:title>Monotonic systems are easier</fr:title><fr:taxon>Article</fr:taxon><fr:date><fr:year>2026</fr:year><fr:month>1</fr:month><fr:day>8</fr:day></fr:date><fr:authors /></fr:frontmatter><fr:mainmatter><fr:p>
If your state is monotonic then caching becomes trivial.
</fr:p><fr:p>
If your value is also monotonic then you can reason about second hand knowledge (known to be known).
</fr:p></fr:mainmatter><fr:backmatter /></fr:tree></fr:mainmatter><fr:backmatter /></fr:tree>

  
  <fr:tree
toc="false"
numbered="true"
show-heading="true"
show-metadata="false"
expanded="false"
root="false"
xmlns:fr="http://www.jonmsterling.com/jms-005P.xml"><fr:frontmatter><fr:anchor>243</fr:anchor><fr:addr>cjj39-0008</fr:addr><fr:route>cjj39-0008.xml</fr:route><fr:title>Advice</fr:title><fr:date><fr:year>2024</fr:year><fr:month>11</fr:month><fr:day>23</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="cjj39.xml"
addr="cjj39"
title="Chris Jensen">Chris Jensen</fr:link></fr:author></fr:authors></fr:frontmatter><fr:mainmatter><fr:tree
toc="true"
numbered="true"
show-heading="true"
show-metadata="false"
expanded="false"
root="false"
xmlns:fr="http://www.jonmsterling.com/jms-005P.xml"><fr:frontmatter><fr:anchor>238</fr:anchor><fr:addr>cjj39-0007</fr:addr><fr:route>cjj39-0007.xml</fr:route><fr:title>Syntax highlighting and unicode for tla+ in papers</fr:title><fr:taxon>Advice</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>11</fr:month><fr:day>23</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="cjj39.xml"
addr="cjj39"
title="Chris Jensen">Chris Jensen</fr:link></fr:author></fr:authors></fr:frontmatter><fr:mainmatter><fr:p>
TLA+ unicode is well done via https://github.com/tlaplus-community/tlauc
</fr:p><fr:p>
  Syntax highlighting is more difficult with unicode in latex.
</fr:p><fr:p>
  Since latex listings does not support unicode, and cannot be made to support unicode for syntax highlighting, you are left with minted.
  The issue is that minted does not support tla out of the box, and minted does not support custom pygmentise parsers easily.
</fr:p><fr:p>
  Solution: Use chromacolor, https://github.com/TomLebeda/chroma_code, with the relevant tree-sitter grammar already loaded.
</fr:p><fr:p>
  Note that the latest tree-sitter-tla does NOT support tree-sitter &lt;0.25, so ensure you have at least this version (2024-11-23).
</fr:p></fr:mainmatter><fr:backmatter /></fr:tree></fr:mainmatter><fr:backmatter /></fr:tree>

 
 <fr:tree
toc="false"
numbered="true"
show-heading="true"
show-metadata="false"
expanded="false"
root="false"
xmlns:fr="http://www.jonmsterling.com/jms-005P.xml"><fr:frontmatter><fr:anchor>245</fr:anchor><fr:addr>cjj39-0009</fr:addr><fr:route>cjj39-0009.xml</fr:route><fr:title>Random-theory</fr:title><fr:date><fr:year>2024</fr:year><fr:month>11</fr:month><fr:day>23</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="cjj39.xml"
addr="cjj39"
title="Chris Jensen">Chris Jensen</fr:link></fr:author></fr:authors></fr:frontmatter><fr:mainmatter><fr:tree
toc="true"
numbered="true"
show-heading="true"
show-metadata="false"
expanded="false"
root="false"
xmlns:fr="http://www.jonmsterling.com/jms-005P.xml"><fr:frontmatter><fr:anchor>228</fr:anchor><fr:addr>cjj39-0006</fr:addr><fr:route>cjj39-0006.xml</fr:route><fr:title>Rummikub is solvable using a normalised form</fr:title><fr:taxon>Conjecture</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>8</fr:month><fr:day>2</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="cjj39.xml"
addr="cjj39"
title="Chris Jensen">Chris Jensen</fr:link></fr:author></fr:authors></fr:frontmatter><fr:mainmatter><fr:p>
  The idea is that there are two normalised forms of any rummikub board which can be simply converted between.

  One which maximises the tiles in the runs, and one which maximises the number of tiles in duplicates.

  The conjecture is that if a tile is placable, it will be directly placable in one of these two normalised forms.
</fr:p></fr:mainmatter><fr:backmatter /></fr:tree><fr:tree
toc="true"
numbered="true"
show-heading="true"
show-metadata="false"
expanded="false"
root="false"
xmlns:fr="http://www.jonmsterling.com/jms-005P.xml"><fr:frontmatter><fr:anchor>230</fr:anchor><fr:addr>cjj39-000A</fr:addr><fr:route>cjj39-000A.xml</fr:route><fr:title>Automation and Augmentation. or: Alienation and Agency</fr:title><fr:date><fr:year>2024</fr:year><fr:month>12</fr:month><fr:day>5</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="cjj39.xml"
addr="cjj39"
title="Chris Jensen">Chris Jensen</fr:link></fr:author></fr:authors></fr:frontmatter><fr:mainmatter><fr:p>
  A recent blog post made the comment that current technology is alienating as it removes agency.
  Although this could be an effect of the current enshitification game-plan of tech companies it could also come from the aim of the tech itself.
</fr:p><fr:tree
toc="true"
numbered="true"
show-heading="true"
show-metadata="false"
expanded="true"
root="false"
xmlns:fr="http://www.jonmsterling.com/jms-005P.xml"><fr:frontmatter><fr:anchor>202</fr:anchor><fr:addr>cjj39-000B</fr:addr><fr:route>cjj39-000B.xml</fr:route><fr:title>Automation</fr:title><fr:date><fr:year>2024</fr:year><fr:month>12</fr:month><fr:day>5</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="cjj39.xml"
addr="cjj39"
title="Chris Jensen">Chris Jensen</fr:link></fr:author></fr:authors></fr:frontmatter><fr:mainmatter><fr:p>
  The purpose of automation is to make an action or job take less time.
</fr:p><fr:p>
  For example, an automated assembly line's purpose is to remove the humans from the assembly line and hence reduce labour costs and by now has also resulted in improved speed of assembly lines.
</fr:p></fr:mainmatter><fr:backmatter /></fr:tree><fr:tree
toc="true"
numbered="true"
show-heading="true"
show-metadata="false"
expanded="true"
root="false"
xmlns:fr="http://www.jonmsterling.com/jms-005P.xml"><fr:frontmatter><fr:anchor>204</fr:anchor><fr:addr>cjj39-000C</fr:addr><fr:route>cjj39-000C.xml</fr:route><fr:title>Augmentation</fr:title><fr:date><fr:year>2024</fr:year><fr:month>12</fr:month><fr:day>5</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="cjj39.xml"
addr="cjj39"
title="Chris Jensen">Chris Jensen</fr:link></fr:author></fr:authors></fr:frontmatter><fr:mainmatter><fr:p>
  Augmentation aims to allow people to do a job better.
</fr:p><fr:p>
  For example, in the driving space, ABS, adaptive cruise control and lane keeping have been very very successful, and allows drivers to pay more attention to the drivers around them while still acting reasonably when there is an issue.
</fr:p><fr:p>
  Augmented systems have the following important characteristic.
  They tend to be continuous.
  Supply them input similar to previous inputs and they will produce similar outputs.
  In practise this means that humans can learn how these systems react and rely on that reaction.
</fr:p><fr:p>
  This gives users agency in preemptively correcting unwanted actions. 
</fr:p></fr:mainmatter><fr:backmatter /></fr:tree><fr:p>
  My thesis is that since the primary aim of automated systems is to make an action or job take less time, its compatibility with human operators is not a primary design goal.
  Hence these systems do not provide affordances for humans, alienating them and removing their agency.
  Instead we can build systems to augment operators, allowing them to perform tasks better.
</fr:p><fr:p>
  We currently have many AI systems which aim to automate many things.
  However, the affordances arising from these systems are markedly discontinuous.
  Especially the current crop of AI systems which actively use randomness to 'mix up' the output.
</fr:p><fr:tree
toc="true"
numbered="true"
show-heading="true"
show-metadata="false"
expanded="true"
root="false"
xmlns:fr="http://www.jonmsterling.com/jms-005P.xml"><fr:frontmatter><fr:anchor>206</fr:anchor><fr:addr>cjj39-000D</fr:addr><fr:route>cjj39-000D.xml</fr:route><fr:title>Job loss through automation</fr:title><fr:date><fr:year>2024</fr:year><fr:month>12</fr:month><fr:day>5</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="cjj39.xml"
addr="cjj39"
title="Chris Jensen">Chris Jensen</fr:link></fr:author></fr:authors></fr:frontmatter><fr:mainmatter><fr:p>
  Historically job losses have occurred when things have been automated, however those have primarily been because the 'effectiveness' of another job has consumed an existing job.
  For example, excel empowered regular people to the point that accountants became largely unnecessary for regular finances.
  MS word empowered regular writers and people, to remove the job of the copy editor.
</fr:p></fr:mainmatter><fr:backmatter /></fr:tree><fr:tree
toc="true"
numbered="true"
show-heading="true"
show-metadata="false"
expanded="true"
root="false"
xmlns:fr="http://www.jonmsterling.com/jms-005P.xml"><fr:frontmatter><fr:anchor>208</fr:anchor><fr:addr>cjj39-000E</fr:addr><fr:route>cjj39-000E.xml</fr:route><fr:title>AI automation and augmentation of Doctors</fr:title><fr:date><fr:year>2024</fr:year><fr:month>12</fr:month><fr:day>5</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="cjj39.xml"
addr="cjj39"
title="Chris Jensen">Chris Jensen</fr:link></fr:author></fr:authors></fr:frontmatter><fr:mainmatter><fr:p>
  Automation: Looking at a picture of a tumor to decide if its cancerous.
</fr:p><fr:p>
  Augmentation: rescaling pictures to be consistent and giving them false color to visualise other datapoints
</fr:p></fr:mainmatter><fr:backmatter /></fr:tree><fr:tree
toc="true"
numbered="true"
show-heading="true"
show-metadata="false"
expanded="true"
root="false"
xmlns:fr="http://www.jonmsterling.com/jms-005P.xml"><fr:frontmatter><fr:anchor>210</fr:anchor><fr:addr>cjj39-000F</fr:addr><fr:route>cjj39-000F.xml</fr:route><fr:title>AI root cause analysis</fr:title><fr:date><fr:year>2024</fr:year><fr:month>12</fr:month><fr:day>5</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="cjj39.xml"
addr="cjj39"
title="Chris Jensen">Chris Jensen</fr:link></fr:author></fr:authors></fr:frontmatter><fr:mainmatter><fr:p>
  Automation: "What is the cause of this bug"
</fr:p><fr:p>
  Augmentation: "Static analysis to overestimate the codepaths which could trigger the bug"
</fr:p><fr:p>
  Augmentation: "Logs filtering to automatically remove 'normal' messages"
</fr:p></fr:mainmatter><fr:backmatter /></fr:tree><fr:p><fr:strong>
  Conclusion.
  </fr:strong></fr:p><fr:p>
  My hope is that we can move from aiming to build automagic solutions to instead build augmenting solutions.
</fr:p><fr:p>
  To adapt a quote from RainWorld.
  With AI automation we have put our faith in the hands of Random Gods.
</fr:p></fr:mainmatter><fr:backmatter /></fr:tree></fr:mainmatter><fr:backmatter /></fr:tree>
</fr:mainmatter><fr:backmatter /></fr:tree>