<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Tech Cafe - python</title>
    <subtitle>Dev adventures, epic bugs, tiny wins, and the occasional meltdown.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://golden-fox.dev/tags/python/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://golden-fox.dev"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-08-26T00:00:00+00:00</updated>
    <id>https://golden-fox.dev/tags/python/atom.xml</id>
    <entry xml:lang="en">
        <title>Git Archaeologist</title>
        <published>2026-08-26T00:00:00+00:00</published>
        <updated>2026-08-26T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Aakriti Agarwal
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://golden-fox.dev/projects/git-archaeologist/"/>
        <id>https://golden-fox.dev/projects/git-archaeologist/</id>
        
        <content type="html" xml:base="https://golden-fox.dev/projects/git-archaeologist/">&lt;p&gt;Git’s forensic tools are surgical. &lt;code&gt;git log -S&lt;&#x2F;code&gt;, &lt;code&gt;git blame&lt;&#x2F;code&gt; and &lt;code&gt;git bisect&lt;&#x2F;code&gt; each answer
a precise question you already know how to ask. I wanted to know whether a model that can
hold an entire repository history in context answers a different kind of question, the
diffuse kind where the answer lives across many commits at once.&lt;&#x2F;p&gt;
&lt;p&gt;So I built a harness: ten questions against one real repository, with ground truth
verified by running &lt;code&gt;git&lt;&#x2F;code&gt; rather than by trusting my memory. Three of the ten were
negative controls, asking about things that never happened, because a model that agrees
with every premise you hand it is not doing archaeology.&lt;&#x2F;p&gt;
&lt;p&gt;The model answered 10&#x2F;10 correctly, including all three controls, and cited 103 commit
SHAs of which 102 resolve to real commits. It fabricated nothing. It was also between 150
and 4,000 times slower than Git on the questions Git can answer.&lt;&#x2F;p&gt;
&lt;p&gt;The result I did not expect was a ceiling. Datasette is a mid-sized project, nine years
and 3,406 commits, and its full history is roughly four million tokens, about four times
the window. I stripped docs, lockfiles, images and vendored assets, then capped diff
sizes, and never got within twice the budget. The bulk is not a few large blobs, it is
2,663 commits of real source diff. The run used the largest chronological prefix that fit,
which was the first 31%.&lt;&#x2F;p&gt;
&lt;p&gt;So “put the whole history in context” has a size limit that nobody advertises, and for any
project with real history you are already past it. Worth measuring before you design
around it.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Built with:&lt;&#x2F;strong&gt; Python, Git, OpenRouter&lt;&#x2F;p&gt;
&lt;p&gt;Repo is private for now.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Stuck</title>
        <published>2026-02-21T00:00:00+00:00</published>
        <updated>2026-02-21T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Aakriti Agarwal
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://golden-fox.dev/projects/stuck/"/>
        <id>https://golden-fox.dev/projects/stuck/</id>
        
        <content type="html" xml:base="https://golden-fox.dev/projects/stuck/">&lt;p&gt;A reporting tool for problems you would rather not put your name to. You drop a pin on a
map or use your current location, pick a severity, and file it. No account, no login,
nothing tying the report back to you.&lt;&#x2F;p&gt;
&lt;p&gt;The anonymity was the interesting constraint. No accounts means no way to rate limit a
user, no moderation queue tied to an identity, and no way to follow up on a report. Every
feature we wanted had to survive that, and a few did not make it.&lt;&#x2F;p&gt;
&lt;p&gt;Reports render as coloured markers on a Leaflet map, one colour per severity, so the shape
of a problem area is visible at a glance.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Built with:&lt;&#x2F;strong&gt; Flask, SQLAlchemy, SQLite, Leaflet, OpenStreetMap&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;wuphy&#x2F;accessibility-reporter&quot;&gt;Team repo&lt;&#x2F;a&gt; (built with three teammates at Hack With SWiCS)&lt;&#x2F;p&gt;
</content>
        
    </entry>
</feed>
