<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Stoyan Korudzhiev</title>
    <description>The latest articles on Forem by Stoyan Korudzhiev (@stoyan_korudzhiev_51f6add).</description>
    <link>https://forem.com/stoyan_korudzhiev_51f6add</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3470115%2Fc48f242b-fec1-4764-be35-f4ee929097b2.jpg</url>
      <title>Forem: Stoyan Korudzhiev</title>
      <link>https://forem.com/stoyan_korudzhiev_51f6add</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/stoyan_korudzhiev_51f6add"/>
    <language>en</language>
    <item>
      <title>I Built a Local-First Git Analytics Tool (Without AI) — Here’s Why</title>
      <dc:creator>Stoyan Korudzhiev</dc:creator>
      <pubDate>Wed, 17 Dec 2025 09:18:41 +0000</pubDate>
      <link>https://forem.com/stoyan_korudzhiev_51f6add/i-built-a-local-first-git-analytics-tool-without-ai-heres-why-1dmm</link>
      <guid>https://forem.com/stoyan_korudzhiev_51f6add/i-built-a-local-first-git-analytics-tool-without-ai-heres-why-1dmm</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Exploring what Git history can tell us about how we work — without uploading data, dashboards, or black boxes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For most of my career, Git history was something I used, not something I analyzed.&lt;/p&gt;

&lt;p&gt;I’d inspect logs when debugging, skim commits when reviewing PRs, or glance at contribution graphs occasionally — but I never treated Git history as a meaningful signal about how I actually work over time.&lt;/p&gt;

&lt;p&gt;That changed when I started feeling increasingly uncomfortable with modern developer analytics tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem with most developer analytics
&lt;/h2&gt;

&lt;p&gt;Many tools promise deep insights into productivity and focus.&lt;br&gt;
The pattern is usually the same:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Upload your data&lt;/li&gt;
&lt;li&gt;Process it remotely&lt;/li&gt;
&lt;li&gt;Return a dashboard&lt;/li&gt;
&lt;li&gt;Add AI-generated interpretations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even when these tools look polished, they often feel disconnected from how developers actually reason about their work.&lt;/p&gt;

&lt;p&gt;As developers, we care about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inspectability&lt;/li&gt;
&lt;li&gt;Determinism&lt;/li&gt;
&lt;li&gt;Owning our tools and data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But with analytics, we often accept:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Opaque scoring&lt;/li&gt;
&lt;li&gt;Cloud-only pipelines&lt;/li&gt;
&lt;li&gt;Insights we can’t easily trace back to raw data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That led me to a simple question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do we really need AI and cloud processing to understand our own Git history?&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Git history is already a rich signal
&lt;/h2&gt;

&lt;p&gt;Git is more than version control.&lt;br&gt;
It’s a chronological log of decisions.&lt;/p&gt;

&lt;p&gt;Every commit contains information about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scope and size of changes&lt;/li&gt;
&lt;li&gt;Frequency of context switches&lt;/li&gt;
&lt;li&gt;Where effort accumulates&lt;/li&gt;
&lt;li&gt;How work evolves over time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When viewed longitudinally, this becomes a surprisingly strong behavioral signal — without needing prediction or classification models.&lt;/p&gt;

&lt;p&gt;And crucially:&lt;br&gt;
&lt;strong&gt;this data already exists locally.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  A strict constraint: everything runs locally
&lt;/h2&gt;

&lt;p&gt;I decided to explore this idea under one hard rule:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;All analysis must run locally.
No AI models.
No cloud processing.
No data leaving the machine.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This wasn’t an ideological stance against AI — it was about trust and clarity.&lt;/p&gt;

&lt;p&gt;If an insight couldn’t be explained directly in terms of commits, timelines, and diffs, it didn’t belong.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building GitGlow as an experiment
&lt;/h2&gt;

&lt;p&gt;That experiment eventually turned into a tool I called GitGlow.&lt;/p&gt;

&lt;p&gt;Initially, GitGlow was just a way to explore repositories differently:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Time-based commit activity&lt;/li&gt;
&lt;li&gt;File-level change patterns&lt;/li&gt;
&lt;li&gt;Visual timelines instead of flat logs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But once I started using it on my own projects, I noticed things I hadn’t consciously tracked before:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Long refactor-heavy periods with little outward progress&lt;/li&gt;
&lt;li&gt;High churn in specific files over time&lt;/li&gt;
&lt;li&gt;Changes in work cadence depending on project type&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of this felt “smart” or predictive — it was simply surfaced more clearly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fahn2dbyy6eu6h32z79ud.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fahn2dbyy6eu6h32z79ud.png" alt="Main GitGlow view showing recent commits and contribution activity for a local repository. All analysis runs locally." width="800" height="747"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Observation instead of profiling
&lt;/h2&gt;

&lt;p&gt;One thing I wanted to avoid was turning analytics into judgment.&lt;/p&gt;

&lt;p&gt;GitGlow doesn’t try to label developers or score productivity.&lt;br&gt;
Instead, it focuses on neutral observations, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clustering of changes&lt;/li&gt;
&lt;li&gt;Shifts in commit size distribution&lt;/li&gt;
&lt;li&gt;Changes in activity regularity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are signals, not conclusions.&lt;/p&gt;

&lt;p&gt;Because everything runs locally, the experience feels closer to introspection than monitoring.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftj71j1qis88g1fa4ovlw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftj71j1qis88g1fa4ovlw.png" alt="Commit insights grouped by work type, allowing drill-down into how different kinds of work accumulate over time." width="800" height="747"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I’m still figuring out
&lt;/h2&gt;

&lt;p&gt;This approach raises open questions I’m still exploring:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How much history is enough to make patterns meaningful?&lt;/li&gt;
&lt;li&gt;Where is the line between insight and over-interpretation?&lt;/li&gt;
&lt;li&gt;Which signals are genuinely useful, and which are just interesting?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’m intentionally moving slowly here.&lt;/p&gt;

&lt;p&gt;Tools that analyze how people work require a high trust bar — and trust is easier to lose than to build.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I’m sharing this now
&lt;/h2&gt;

&lt;p&gt;This isn’t a product launch.&lt;/p&gt;

&lt;p&gt;I’m sharing this because I think there’s room for developer tooling that is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Local-first&lt;/li&gt;
&lt;li&gt;Calm by default&lt;/li&gt;
&lt;li&gt;Inspectable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Built around observation, not prediction.&lt;br&gt;
If nothing else, this experiment changed how I look at my own Git history.&lt;/p&gt;

&lt;p&gt;The signal was already there.&lt;br&gt;
I just needed to stop outsourcing the interpretation.&lt;/p&gt;

&lt;p&gt;GitGlow exists today as a working experiment, and I’m continuing to explore where this direction leads. &lt;a href="https://gitglow.dev" rel="noopener noreferrer"&gt;GitGlow&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devtools</category>
      <category>git</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
