<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <title>Posts Tagged "git" on Alex Leighton's Blog</title>
  <id>https://alexleighton.com/posts/tags/git-tag-feed.xml</id>
  <link href="https://alexleighton.com/posts/tags/git-tag-feed.xml" rel="self" />
  <link href="https://alexleighton.com/posts/tags/git.html" />
  <updated>2026-03-11T13:36:28.055135011Z</updated>
  <author>
    <name>Alex Leighton</name>
    <uri>https://alexleighton.com/</uri>
  </author>
  <icon>https://alexleighton.com/static/icon-dino.png</icon>
  <logo>https://alexleighton.com/static/icon-dino.png</logo>
  
  <entry>
    <title>Filesystems as Personal Memory</title>
    <id>https://alexleighton.com/posts/2026-03-09-filesystems-as-personal-memory.html</id>
    <link href="https://alexleighton.com/posts/2026-03-09-filesystems-as-personal-memory.html" />
    <published>2026-03-09T13:00:00Z</published>
    <updated>2026-03-09T13:00:00Z</updated>
    <author><name>Alex Leighton</name></author>
    <summary type="html"><![CDATA[<p>Maybe plain files and git are all you need.</p><p>Published on <span title="2026-03-09T13:00:00Z">2026-03-09</span></p>]]></summary>
    <content type="html"><![CDATA[<h3>Maybe plain files and git are all you need.</h3><p>Published on <span title="2026-03-09T13:00:00Z">2026-03-09</span><br>Tags: commentary, git, llms, software-eng-auto</p><blockquote>
<p><a href="https://madalitso.me/notes/why-everyone-is-talking-about-filesystems"><strong>Daniel Phiri</strong> on 2026-02-23</a>:</p><p>Here's my actual take on all of this, the thing I think people are dancing around but not saying directly.</p>
<p>Filesystems can redefine what personal computing means in the age of AI.</p>
<p>Not in the "everything runs locally" sense (but maybe?). In the sense that your data, your context, your preferences, your skills, your memory — lives in a format you own, that any agent can read, that isn't locked inside a specific application.</p></blockquote>
<p>I like this vision of the future — personal data in whatever form is easiest or convenient, stored as the person chooses, arbitrary computation enabled by the natural language interface of LLMs. As I read this superb summary of the current state of coding agents intersecting with the filesystem, I had a couple thoughts.</p><p>...<br><a href="https://alexleighton.com/posts/2026-03-09-filesystems-as-personal-memory.html">Read the full post →</a></p>]]></content>
  </entry>
  
  <entry>
    <title>KBS: Going Automatic</title>
    <id>https://alexleighton.com/posts/2026-02-17-kbs-going-automatic.html</id>
    <link href="https://alexleighton.com/posts/2026-02-17-kbs-going-automatic.html" />
    <published>2026-02-18T05:30:00Z</published>
    <updated>2026-02-18T05:30:00Z</updated>
    <author><name>Alex Leighton</name></author>
    <summary type="html"><![CDATA[<p>Exploring a hands-off agent-driven workflow.</p><p>Published on <span title="2026-02-18T05:30:00Z">2026-02-18</span></p>]]></summary>
    <content type="html"><![CDATA[<h3>Exploring a hands-off agent-driven workflow.</h3><p>Published on <span title="2026-02-18T05:30:00Z">2026-02-18</span><br>Tags: article, git, llm, ocaml, software-eng, software-eng-auto</p><p>I've decided to use this project as a testbed for automatic development, to explore the kinds of techniques described in recent results [<a href="../../../posts/2026-02-12-new-software-engineering-modes.html">1</a>] [<a href="../../../posts/2026-02-14-more-software-engineering-research.html">2</a>], and to speed up development. I'll be making the vast majority of changes to the codebase via coding agents, exploring what controls are needed to stay hands-off yet maintain code quality.</p>
<h2>Short AGENTS.md</h2>
<p>I've played around with longer <code>AGENTS.md</code> and not seen much value. Agents would ignore pieces, and after a while it felt like simply a waste of context space. I'm keeping <a href="https://github.com/alexleighton/knowledge-bases/blob/223c4ece2550fb1196cec770d97762a66823fcda/AGENTS.md?plain=1"><code>AGENTS.md</code> short</a> this time around, "linking" to where more information can be retrieved, with the hope that brevity keeps the content important.</p><p>...<br><a href="https://alexleighton.com/posts/2026-02-17-kbs-going-automatic.html">Read the full post →</a></p>]]></content>
  </entry>
  
  <entry>
    <title>Storage for Knowledge Bases</title>
    <id>https://alexleighton.com/posts/2026-02-01-storage-for-knowledge-bases.html</id>
    <link href="https://alexleighton.com/posts/2026-02-01-storage-for-knowledge-bases.html" />
    <published>2026-02-03T05:30:00Z</published>
    <updated>2026-02-03T05:30:00Z</updated>
    <author><name>Alex Leighton</name></author>
    <summary type="html"><![CDATA[<p>Progress, regrets, and motivation working with SQLite.</p><p>Published on <span title="2026-02-03T05:30:00Z">2026-02-03</span></p>]]></summary>
    <content type="html"><![CDATA[<h3>Progress, regrets, and motivation working with SQLite.</h3><p>Published on <span title="2026-02-03T05:30:00Z">2026-02-03</span><br>Tags: article, database, git, ocaml, software-eng</p><p>Today's update is brought to you by my lack of motivation 😆. I decided to work on building out a storage layer for Knowledge Bases objects, and then got burned by lack of interest.</p>
<p>Restating our storage requirements: we need notes, todos, etc to be persisted to disk in a way where git's diff will capably show edits, additions, and deletions, and which allows for easily querying these objects by identifier or by their relation to each other (we want to support parent-child, related-to, etc). To meet those requirements I intend to persist data in two ways. First, in an appropriately-sorted JSON or YAML file, to solve for the git-diff requirement. Second, in a <a href="https://en.wikipedia.org/wiki/SQLite">SQLite</a> database to make it easy to add/edit/delete/query. The program will mirror the SQLite database onto the JSON file unless it's determined to be out of date (i.e. when the git branch is changed), in which case we'll rebuild the database from the JSON file. For now I'm starting with the SQLite db, as that can be useful for purely local todo storage, and we'll bolt-on the ability to synchronize them over git later.</p><p>...<br><a href="https://alexleighton.com/posts/2026-02-01-storage-for-knowledge-bases.html">Read the full post →</a></p>]]></content>
  </entry>
  
  <entry>
    <title>Orchestrating Coding Agents in 2026</title>
    <id>https://alexleighton.com/posts/2026-01-27-orchestrating-coding-agents-in-2026.html</id>
    <link href="https://alexleighton.com/posts/2026-01-27-orchestrating-coding-agents-in-2026.html" />
    <published>2026-01-28T06:00:00Z</published>
    <updated>2026-01-28T06:00:00Z</updated>
    <author><name>Alex Leighton</name></author>
    <summary type="html"><![CDATA[<p>Experimental results in the agent orchestration design space.</p><p>Published on <span title="2026-01-28T06:00:00Z">2026-01-28</span></p>]]></summary>
    <content type="html"><![CDATA[<h3>Experimental results in the agent orchestration design space.</h3><p>Published on <span title="2026-01-28T06:00:00Z">2026-01-28</span><br>Tags: commentary, erlang, git, llm, software-eng, software-eng-auto</p><p>I am gratified to see some of my musings on the direction of coding agents are proving accurate. In <a href="../../../posts/2025-09-01-quote-erlang-supervisors.html">September of last year</a> I speculated that, given the non-deterministic and faulty nature of LLMs, folks might be served by adopting fault-tolerant architectures to orchestrate coding agents:</p>
<blockquote>
<p>From everything I've seen, we're not yet in a situation where it's either practical or economical to execute multiple coding agents in parallel or orchestrated. However I think in a couple years the technology will be cheap enough that we'll start needing to think about how to orchestrate groups of agents, and the idea of leaning on Erlang's learnings intrigues me. Constructing the agents and their execution frameworks as individual actors for concurrent execution, while arraying some as supervisors and others as workers, seems rich for investigation.</p>
</blockquote><p>...<br><a href="https://alexleighton.com/posts/2026-01-27-orchestrating-coding-agents-in-2026.html">Read the full post →</a></p>]]></content>
  </entry>
  
  <entry>
    <title>Year in Review: 2025</title>
    <id>https://alexleighton.com/posts/2025-12-31-year-in-review-2025.html</id>
    <link href="https://alexleighton.com/posts/2025-12-31-year-in-review-2025.html" />
    <published>2026-01-01T06:15:00Z</published>
    <updated>2026-01-01T06:15:00Z</updated>
    <author><name>Alex Leighton</name></author>
    <summary type="html"><![CDATA[<p>Building and blogging on this site the past year.</p><p>Published on <span title="2026-01-01T06:15:00Z">2026-01-01</span></p>]]></summary>
    <content type="html"><![CDATA[<h3>Building and blogging on this site the past year.</h3><p>Published on <span title="2026-01-01T06:15:00Z">2026-01-01</span><br>Tags: article, git, meta, ocaml, static-site</p><p>For 2024's New Year's resolution I decided I'd finally build and publish a personal website. That I'd write up my thoughts on the articles I was reading and post them instead of dumping them on friends 😆. In review, I'm happy to say I succeeded.</p>
<p>I wrote and published 164 blog posts over the past year, not counting this post. September was my most prolific month. I initialized the OCaml project that became the static site generator in late January, writing a <a href="../../../posts/2025-02-02-listening-to-the-resonance-between.html">test post</a> at the beginning of February to work out frontmatter parsing, markdown generation, and my custom templating language. The first "real" post came at the end of June, a few days after I bought the domain name.</p><p>...<br><a href="https://alexleighton.com/posts/2025-12-31-year-in-review-2025.html">Read the full post →</a></p>]]></content>
  </entry>
  
  <entry>
    <title>TypeIDs for Knowledge Bases</title>
    <id>https://alexleighton.com/posts/2025-11-29-typeids-for-knowledge-bases.html</id>
    <link href="https://alexleighton.com/posts/2025-11-29-typeids-for-knowledge-bases.html" />
    <published>2025-11-30T04:00:00Z</published>
    <updated>2025-11-30T04:00:00Z</updated>
    <author><name>Alex Leighton</name></author>
    <summary type="html"><![CDATA[<p>Data consistency and the primary identifier for content.</p><p>Published on <span title="2025-11-30T04:00:00Z">2025-11-30</span></p>]]></summary>
    <content type="html"><![CDATA[<h3>Data consistency and the primary identifier for content.</h3><p>Published on <span title="2025-11-30T04:00:00Z">2025-11-30</span><br>Tags: article, git, ocaml, software-eng</p><h2>TypeID</h2>
<p><a href="https://github.com/jetify-com/typeid">TypeID</a> is a micro-standard combining a number of well-thought-out decisions.</p>
<blockquote>
<p>TypeIDs are a modern, type-safe extension of UUIDv7. Inspired by a similar use of prefixes in Stripe's APIs.</p>
<p>TypeIDs are canonically encoded as lowercase strings consisting of three parts:</p>
<ol>
<li>A type prefix (at most 63 characters in all lowercase snake_case ASCII <code>[a-z_]</code>).</li>
<li>An underscore '_' separator</li>
<li>A 128-bit UUIDv7 encoded as a 26-character string using a modified base32 encoding.</li>
</ol>
</blockquote>
<pre><code class="language-plain">user_2x4y6z8a0b1c2d3e4f5g6h7j8k
└──┘ └────────────────────────┘
type    uuid suffix (base32)
</code></pre>
<p>Most identifiers, barring a specialized context, should include a "type" for the identifier. Interconnected computer systems are always passing around identifiers — for someone holding an identifier in their database it is really valuable to know who that identifier belongs to as well as what the identifier is for. For example in a financial institution handling investments, <code>md_quote_2x4y6z8a0b1c2d3e4f5g6h7j8k</code> can tell the receiver that they're holding a reference to a stock price quote, owned by the market data (<code>md</code>) system. Identifier types give engineers metadata, which can be especially useful when there's a bug in the system — no need to stress whether the integer identifier you're currently holding came from the <code>user</code> table or <code>news</code> table.</p><p>...<br><a href="https://alexleighton.com/posts/2025-11-29-typeids-for-knowledge-bases.html">Read the full post →</a></p>]]></content>
  </entry>
  
  <entry>
    <title>Coding Agent Attribution in Open Source</title>
    <id>https://alexleighton.com/posts/2025-11-06-coding-agent-attribution-in-open-source.html</id>
    <link href="https://alexleighton.com/posts/2025-11-06-coding-agent-attribution-in-open-source.html" />
    <published>2025-11-07T05:45:00Z</published>
    <updated>2025-11-07T05:45:00Z</updated>
    <author><name>Alex Leighton</name></author>
    <summary type="html"><![CDATA[<p>Using git commit footers to work on Fedora and Apache projects.</p><p>Published on <span title="2025-11-07T05:45:00Z">2025-11-07</span></p>]]></summary>
    <content type="html"><![CDATA[<h3>Using git commit footers to work on Fedora and Apache projects.</h3><p>Published on <span title="2025-11-07T05:45:00Z">2025-11-07</span><br>Tags: commentary, git, llm, software-eng</p><p>I learned about <a href="https://alchemists.io/articles/git_trailers">git commit footers</a> AKA git trailers, a few years back, from engineers recommending it as a structured commit information strategy similar to <a href="../../../posts/2025-06-30-conventional-communication.html">conventional commits</a>. None of the jobs I've worked have cared to track information at that level of detail. I think the code review tool at Amazon would stick the review URL as a footer, but that was as far as I've ever seen this feature used on the job. <a href="https://xeiaso.net/notes/2025/assisted-by-footer/">Xe Iaso's recent blog post</a> has drawn my attention to a new usage similar to the code review one — labeling commits as <code>Assisted-by</code> a coding agent.</p><p>...<br><a href="https://alexleighton.com/posts/2025-11-06-coding-agent-attribution-in-open-source.html">Read the full post →</a></p>]]></content>
  </entry>
  
  <entry>
    <title>Starting Knowledge Bases</title>
    <id>https://alexleighton.com/posts/2025-10-22-starting-knowledge-bases.html</id>
    <link href="https://alexleighton.com/posts/2025-10-22-starting-knowledge-bases.html" />
    <published>2025-10-22T13:30:00Z</published>
    <updated>2025-10-22T13:30:00Z</updated>
    <author><name>Alex Leighton</name></author>
    <summary type="html"><![CDATA[<p>Writing a coding agent tool in OCaml.</p><p>Published on <span title="2025-10-22T13:30:00Z">2025-10-22</span></p>]]></summary>
    <content type="html"><![CDATA[<h3>Writing a coding agent tool in OCaml.</h3><p>Published on <span title="2025-10-22T13:30:00Z">2025-10-22</span><br>Tags: article, git, llm, ocaml</p><p>A couple days ago, <a href="https://en.wikipedia.org/wiki/Steve_Yegge">Steve Yegge</a> <a href="https://steve-yegge.medium.com/beads-for-blobfish-80c7a2977ffa">wrote about a coding agent tool</a> he's been developing called <a href="https://github.com/steveyegge/beads">Beads</a>.</p>
<blockquote>
<p>Beads is a lightweight memory system for coding agents, using a graph-based issue tracker. Four kinds of dependencies work to chain your issues together like beads, making them easy for agents to follow for long distances, and reliably perform complex task streams in the right order.</p>
</blockquote>
<p>I haven't had an opportunity to see if it works well or not, but the feature set seems straightforward to implement and I've been looking for a project to work on which will involve OCaml and publishing to opam. I'll be documenting the development process here 😁.</p><p>...<br><a href="https://alexleighton.com/posts/2025-10-22-starting-knowledge-bases.html">Read the full post →</a></p>]]></content>
  </entry>
  
  <entry>
    <title>TIL: Linux Commit Messages</title>
    <id>https://alexleighton.com/posts/2025-10-10-til-linux-commit-messages.html</id>
    <link href="https://alexleighton.com/posts/2025-10-10-til-linux-commit-messages.html" />
    <published>2025-10-10T13:30:00Z</published>
    <updated>2025-10-10T13:30:00Z</updated>
    <author><name>Alex Leighton</name></author>
    <summary type="html"><![CDATA[<p>Communicating changes.</p><p>Published on <span title="2025-10-10T13:30:00Z">2025-10-10</span></p>]]></summary>
    <content type="html"><![CDATA[<h3>Communicating changes.</h3><p>Published on <span title="2025-10-10T13:30:00Z">2025-10-10</span><br>Tags: communication, git, software-eng, til</p><p>The Linux patch submission process has a <a href="https://www.kernel.org/doc/html/v4.12/process/submitting-patches.html#describe-your-changes">nice guide</a> (<a href="https://lobste.rs/s/szoe3m/conventional_commits_considered#c_vjm6mt">via</a>) on crafting git commit messages:</p>
<blockquote>
<p>Describe your changes in imperative mood, e.g. “make xyzzy do frotz” instead of “[This patch] makes xyzzy do frotz” or “[I] changed xyzzy to do frotz”, as if you are giving orders to the codebase to change its behaviour.</p>
</blockquote><p><a href="https://alexleighton.com/posts/2025-10-10-til-linux-commit-messages.html">Read the post →</a></p>]]></content>
  </entry>
  
  <entry>
    <title>TIL: Git Exclude</title>
    <id>https://alexleighton.com/posts/2025-09-03-til-git-exclude.html</id>
    <link href="https://alexleighton.com/posts/2025-09-03-til-git-exclude.html" />
    <published>2025-09-04T04:55:00Z</published>
    <updated>2025-09-04T04:55:00Z</updated>
    <author><name>Alex Leighton</name></author>
    <summary type="html"><![CDATA[<p>Local-only git ignore.</p><p>Published on <span title="2025-09-04T04:55:00Z">2025-09-04</span></p>]]></summary>
    <content type="html"><![CDATA[<h3>Local-only git ignore.</h3><p>Published on <span title="2025-09-04T04:55:00Z">2025-09-04</span><br>Tags: git, software-eng, til</p><p>I came across <a href="https://marijkeluttekes.dev/blog/articles/2025/09/03/git-exclude-a-handy-feature-you-might-not-know-about/">"Git exclude, a handy feature you might not know about"</a> by Marijke Luttekes, and TIL that git has a local-only ignore files feature. Unlike <code>.gitignore</code>, you can put file paths to be ignored by git into <code>.git/info/exclude</code>, but there's no file checked into tracked files, so your ignored files aren't shared with people you're working with. Useful for local notes or snippets or your favorite text editor's repo-specific configuration.</p><p><a href="https://alexleighton.com/posts/2025-09-03-til-git-exclude.html">Read the post →</a></p>]]></content>
  </entry>
  
  <entry>
    <title>Capturing Code Conversations</title>
    <id>https://alexleighton.com/posts/2025-08-20-capturing-code-conversations.html</id>
    <link href="https://alexleighton.com/posts/2025-08-20-capturing-code-conversations.html" />
    <published>2025-08-20T14:15:53Z</published>
    <updated>2025-08-20T14:15:53Z</updated>
    <author><name>Alex Leighton</name></author>
    <summary type="html"><![CDATA[<p>Concurrence between two blog posts.</p><p>Published on <span title="2025-08-20T14:15:53Z">2025-08-20</span></p>]]></summary>
    <content type="html"><![CDATA[<h3>Concurrence between two blog posts.</h3><p>Published on <span title="2025-08-20T14:15:53Z">2025-08-20</span><br>Tags: code-review, commentary, git, software-eng</p><p>I saw an interesting concurrence between a couple blog posts that came across my feed:</p>
<ul>
<li><a href="https://tigerbeetle.com/blog/2025-08-04-code-review-can-be-better/">Code Review Can Be Better</a></li>
<li><a href="https://zed.dev/blog/sequoia-backs-zed">Sequoia Backs Zed's Vision for Collaborative Coding</a></li>
</ul>
<p>In both there's a desire to capture the conversations that produced code, alongside the code. For the Tigerbeetle dev, the desire is to reuse git and your usual text editor when doing code reviews, so that the code review comments, answers, and adjustments live in git as part of the history. For the Zed team, they think git is insufficient for capturing the conversations they're having, which I presume would include code review, such that they're going to build a new version control system. I wonder if the Zed team and the Tigerbeetle dev are feeling the same pain around trying to orchestrate communication within git's commit system.</p><p><a href="https://alexleighton.com/posts/2025-08-20-capturing-code-conversations.html">Read the post →</a></p>]]></content>
  </entry>
  
</feed>
