<?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>DEV Community: Kandeepa Sundaram</title>
    <description>The latest articles on DEV Community by Kandeepa Sundaram (@kandeepa_sundaram).</description>
    <link>https://dev.to/kandeepa_sundaram</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3997112%2Fcef20e04-b62e-4291-b18a-24f4436e8df0.jpg</url>
      <title>DEV Community: Kandeepa Sundaram</title>
      <link>https://dev.to/kandeepa_sundaram</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kandeepa_sundaram"/>
    <language>en</language>
    <item>
      <title>The Augmentation Mindset: How I Built an App to Amplify, Not Replace, My Book Fair System</title>
      <dc:creator>Kandeepa Sundaram</dc:creator>
      <pubDate>Wed, 29 Jul 2026 07:30:00 +0000</pubDate>
      <link>https://dev.to/kandeepa_sundaram/the-augmentation-mindset-how-i-built-an-app-to-amplify-not-replace-my-book-fair-system-3a37</link>
      <guid>https://dev.to/kandeepa_sundaram/the-augmentation-mindset-how-i-built-an-app-to-amplify-not-replace-my-book-fair-system-3a37</guid>
      <description>&lt;p&gt;I have a system.&lt;/p&gt;

&lt;p&gt;For 11 years, I've attended every single edition of my town's book fair. Not one miss. Not even during the COVID year when they moved it outdoors with masks and sanitizer stations. I was there.&lt;/p&gt;

&lt;p&gt;This isn't casual browsing. This is &lt;strong&gt;clockwork&lt;/strong&gt;. This is tradition.&lt;/p&gt;

&lt;p&gt;And this year, I finally built an app to go with it.&lt;/p&gt;

&lt;p&gt;But here's the thing—the app didn't replace my system. It didn't replace my judgment, my taste, or the hard-earned intuition that comes from years of reading and buying books. What it did was &lt;strong&gt;amplify&lt;/strong&gt; everything I already knew.&lt;/p&gt;

&lt;p&gt;Because when you combine human wisdom with algorithmic efficiency, you don't just buy better books. You become &lt;em&gt;unstoppable&lt;/em&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Ritual (Phase 1: Reconnaissance)
&lt;/h2&gt;

&lt;p&gt;The fair runs for 10 days. I never buy everything in one visit. That's amateur hour.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Visits 1 &amp;amp; 2&lt;/strong&gt; – I go in with zero intent to purchase. Well, almost zero. I allow myself &lt;em&gt;one&lt;/em&gt; or &lt;em&gt;two&lt;/em&gt; books—the ones I've been waiting for all year. The new releases. The out-of-print gems. The ones that would break my heart if someone else grabbed them.&lt;/p&gt;

&lt;p&gt;For everything else? I log.&lt;/p&gt;

&lt;p&gt;My weapon of choice for the first 10 years: &lt;strong&gt;a single A4 sheet of paper, folded into four long sides&lt;/strong&gt;. Old school. Reliable. No battery required. No API dependency. No downtime.&lt;/p&gt;

&lt;p&gt;I walk stall to stall, row by row. My left hand holds the folded paper. My right hand holds a pen. I jot down:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Stall number&lt;/strong&gt; (because I &lt;em&gt;will&lt;/em&gt; forget where I saw it)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Book title and author&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Price&lt;/strong&gt; (the one they quote, not the MRP)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By the end of Visit 2, that A4 sheet is &lt;em&gt;dense&lt;/em&gt;. Tiny handwriting. Arrows crossing out prices I misheard. Asterisks next to "must reconsider." Sometimes I run out of space and start writing vertically in the margins.&lt;/p&gt;

&lt;p&gt;I usually have &lt;strong&gt;75–100 books&lt;/strong&gt; on that list.&lt;/p&gt;

&lt;p&gt;That's not a shopping list. That's a &lt;em&gt;dataset&lt;/em&gt;. Built by hand. Curated by instinct. Refined over 11 years of trial and error.&lt;/p&gt;

&lt;p&gt;(And yes, I still have all those folded sheets—neatly archived in a file. Eleven years of book fair history, preserved in ink. Sometimes I flip through them just to see how my taste has evolved.)&lt;/p&gt;




&lt;h2&gt;
  
  
  The Ritual (Phase 2: Consolidation &amp;amp; Scrutiny)
&lt;/h2&gt;

&lt;p&gt;Visit 3 is where the magic—and the headache—happens.&lt;/p&gt;

&lt;p&gt;I take my folded A4 sheet home. Spread it out on my desk. Open my laptop. And I &lt;em&gt;transcribe&lt;/em&gt; everything into a massive spreadsheet.&lt;/p&gt;

&lt;p&gt;Yes, I manually type out 75–100 book titles, stall numbers, and prices. Yes, it takes a couple of hours. Yes, my neck hurts afterward. But this is the &lt;em&gt;consolidation phase&lt;/em&gt;, and it's sacred.&lt;/p&gt;

&lt;p&gt;Now the real work begins—and this is where &lt;strong&gt;human judgment&lt;/strong&gt; takes over:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Prioritization&lt;/strong&gt; – I rank every book on a scale. 5 = "will regret forever if I don't buy." 1 = "interesting but I can live without it." This isn't random—it's shaped by years of knowing what I actually finish reading versus what gathers dust.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review check&lt;/strong&gt; – I cross-check Goodreads, YouTube book reviewers, and Reddit threads. But I don't blindly trust scores. I've learned that a 4.2 star book in one genre is different from a 4.2 star book in another. Context matters. &lt;em&gt;I&lt;/em&gt; bring the context.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Price comparison&lt;/strong&gt; – I check online stores for every single title. This alone takes time. And I &lt;em&gt;know&lt;/em&gt; which platforms usually have the best deals for which genres.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Edition verification&lt;/strong&gt; – Is the fair copy a newer edition? Better cover? Different translator? I've been burned before. I know which publishers produce quality editions and which ones cut corners. That's not in any database—that's in my memory.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By the end of this phase, I have a &lt;strong&gt;refined, sorted, hyper-analyzed list&lt;/strong&gt; of about 40–50 books that made the cut.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Ritual (Phase 3: The Budget War)
&lt;/h2&gt;

&lt;p&gt;Here's where it gets brutal.&lt;/p&gt;

&lt;p&gt;My total wishlist usually adds up to around &lt;strong&gt;₹40,000–50,000&lt;/strong&gt;. That's a significant amount, and I need to be disciplined.&lt;/p&gt;

&lt;p&gt;So I start &lt;em&gt;killing my darlings&lt;/em&gt;. And this is purely &lt;strong&gt;human intuition&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The book with a 4-star rating but I already own 3 other books by the same author and haven't finished two of them? &lt;em&gt;Drop.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;The one that's cheaper online but I want it &lt;em&gt;now&lt;/em&gt; because I'm going on a trip next week? &lt;em&gt;Keep.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;The one I'd "probably read someday"? &lt;em&gt;Drop. Drop. Drop.&lt;/em&gt; (I've learned that "someday" rarely comes.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I trim the list down to &lt;strong&gt;20–30 books&lt;/strong&gt;, bringing the final spend to around &lt;strong&gt;₹20,000&lt;/strong&gt;. These are the chosen ones. The ones that survive the gauntlet.&lt;/p&gt;

&lt;p&gt;Then I go back for &lt;strong&gt;Visit 4&lt;/strong&gt; (and sometimes Visit 5) with a mission: buy only those 20–30, stall by stall, checking each one off my list like a hunter.&lt;/p&gt;

&lt;p&gt;By the end, I'm exhausted, ecstatic, and a few thousand rupees poorer. But my bookshelf is &lt;em&gt;glorious&lt;/em&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem That Finally Broke Me
&lt;/h2&gt;

&lt;p&gt;This system works. It has worked for 11 years.&lt;/p&gt;

&lt;p&gt;But this year, I hit a wall.&lt;/p&gt;

&lt;p&gt;During Visit 3, while manually typing 80+ book titles into my spreadsheet, I realized: &lt;em&gt;I have been doing this exact same data entry for over a decade.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I'm a developer. I build automation for a living. And I was manually transcribing scribbled notes from a folded piece of paper like it was 1995.&lt;/p&gt;

&lt;p&gt;That's when I snapped.&lt;/p&gt;

&lt;p&gt;I closed the spreadsheet. Opened VS Code. And spent the next few hours building what I should have built years ago.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3ya4hl2vmdh4pxgpqvgv.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3ya4hl2vmdh4pxgpqvgv.png" alt="infographic" width="799" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The App: AI + My System, Not AI vs. My System
&lt;/h2&gt;

&lt;p&gt;Here's the critical distinction: &lt;strong&gt;I didn't build the app to replace my judgment. I built it to handle the &lt;em&gt;grunt work&lt;/em&gt; so my judgment could focus on what actually matters.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What the App Does (The Automation Layer)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Quick Log Mode (Replaces the A4 Sheet—But Keeps My Curation)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open the app, tap "New Find," and log: stall number, book title (via camera OCR), price.&lt;/li&gt;
&lt;li&gt;No more cramped handwriting. No more "wait, what stall was this again?"&lt;/li&gt;
&lt;li&gt;But &lt;em&gt;I&lt;/em&gt; still decide what gets logged. The app doesn't suggest books. It doesn't curate. That's my job.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Smart Consolidation Dashboard (Replaces the Spreadsheet—But Keeps My Prioritization)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The app aggregates all my logged books into a single, sortable, filterable list.&lt;/li&gt;
&lt;li&gt;It shows fair price, online price (via API), price difference, and ratings.&lt;/li&gt;
&lt;li&gt;But &lt;em&gt;I&lt;/em&gt; still assign the priority score. The app doesn't tell me what to prioritize. It just gives me the data &lt;em&gt;faster&lt;/em&gt; so I can spend more time thinking and less time typing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. The Budget Optimizer (The Knapsack Algorithm)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I set my budget. I assign each book a priority score.&lt;/li&gt;
&lt;li&gt;The app runs a &lt;strong&gt;knapsack algorithm&lt;/strong&gt;—a classic optimization problem—to suggest combinations that maximize total priority within budget.&lt;/li&gt;
&lt;li&gt;Here's the key: &lt;strong&gt;it suggests, it doesn't decide.&lt;/strong&gt; I still override it. I still swap books based on gut feel. The algorithm doesn't know that I've been wanting that obscure memoir for years. It doesn't know that I already own 5 books on the same topic as that "high priority" recommendation. I know that. The app doesn't.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Stall Mapping&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The app builds a map of all my "must-buy" books by stall.&lt;/li&gt;
&lt;li&gt;On Visit 4, I open the map and plan my route.&lt;/li&gt;
&lt;li&gt;This is pure efficiency. It saves me physical exhaustion. But &lt;em&gt;I&lt;/em&gt; still decide which books make the final cut.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5. Final Checklist&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;As I buy each book, I tap "Purchased."&lt;/li&gt;
&lt;li&gt;The app tracks my remaining budget in real-time.&lt;/li&gt;
&lt;li&gt;If I find a surprise gem (which always happens), I can swap it with a lower-priority book and recalculate instantly.&lt;/li&gt;
&lt;li&gt;The app handles the arithmetic. I handle the &lt;em&gt;strategy&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The AI Layer (Where It Actually Helped—But Didn't Take Over)
&lt;/h2&gt;

&lt;p&gt;I used AI sparingly. Deliberately. In places where it &lt;em&gt;augments&lt;/em&gt;, not replaces.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OCR for ISBN &amp;amp; Title Extraction&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Instead of typing book titles while juggling a chai and a tote bag, I snap a photo.&lt;/li&gt;
&lt;li&gt;Gemini extracts the title, author, and ISBN in seconds.&lt;/li&gt;
&lt;li&gt;But it makes mistakes. Blurry photos, bad lighting, weird fonts. And here's where &lt;em&gt;I&lt;/em&gt; come in—I verify every extraction. I correct the errors. The AI handles most of the work; I handle the part that requires human discernment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Automated Review Summaries&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Instead of opening Goodreads for every book, the app fetches the top reviews and generates a one-line summary using a lightweight LLM.&lt;/li&gt;
&lt;li&gt;Example: &lt;em&gt;"Widely considered the best business book on disruption—but some find it dense."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;But I don't trust it blindly. I've read enough reviews to know when an LLM is paraphrasing fluff. I still dig deeper for the books I'm genuinely considering.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Price Trend Prediction&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The app shows historical price data: &lt;em&gt;"Currently trending lower than last month—good time to buy."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;This is helpful. But it doesn't account for things like: "I'm going on a trip next week and I want to read this on the flight" or "I have a gift card expiring soon." Those are &lt;em&gt;my&lt;/em&gt; inputs. The AI just provides the raw signal.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The First Real Test: AI + Me, Together
&lt;/h2&gt;

&lt;p&gt;Visit 3 was my trial run.&lt;/p&gt;

&lt;p&gt;I walked in with my phone instead of my folded A4 sheet. I logged over 70 books in a couple of hours. The app categorized them, compared prices, and pulled reviews—all in real-time.&lt;/p&gt;

&lt;p&gt;That evening, I sat at my desk (no transcribing this time) and opened the dashboard. All my books sorted by priority, price difference, and stall number.&lt;/p&gt;

&lt;p&gt;I set my budget. The optimizer ran in milliseconds and suggested a balanced list.&lt;/p&gt;

&lt;p&gt;I cross-checked against my gut. It matched almost perfectly—except it had swapped out a few books I was lukewarm about for some cheaper ones I'd overlooked. That's the kind of insight I would &lt;em&gt;never&lt;/em&gt; catch manually. The algorithm saw patterns in my own prioritization that I was blind to.&lt;/p&gt;

&lt;p&gt;But I also overrode it. I kept a book that was over budget because I'd been waiting for that author's new release for years. The algorithm didn't know that. &lt;em&gt;I&lt;/em&gt; did.&lt;/p&gt;

&lt;p&gt;Visit 4 took much less time than usual. I bought my final shortlist, stayed within budget, and walked out with zero regret.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Deeper Lesson: AI Doesn't Replace—It Amplifies
&lt;/h2&gt;

&lt;p&gt;Here's what I walked away with:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My experience was the real asset.&lt;/strong&gt; The app didn't teach me how to prioritize. It didn't teach me which books are worth reading. It didn't teach me the difference between a good translation and a great one. I already knew all that.&lt;/p&gt;

&lt;p&gt;What the app did was &lt;strong&gt;compress the borining parts&lt;/strong&gt;—data entry, arithmetic, cross-referencing, route planning—so I could spend &lt;em&gt;more&lt;/em&gt; time on the parts that require human judgment: curation, intuition, strategy, and the joy of discovery.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The best AI tools aren't the ones that think for you. They're the ones that think &lt;em&gt;with&lt;/em&gt; you.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A reader with deep experience + an AI that handles the grunt work = a combination that's greater than either alone.&lt;/p&gt;

&lt;p&gt;The AI didn't replace me. It made me &lt;em&gt;more&lt;/em&gt; me.&lt;/p&gt;




&lt;h2&gt;
  
  
  What This Means for Techies Everywhere
&lt;/h2&gt;

&lt;p&gt;If you're a developer reading this, here's the takeaway:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your expertise is irreplaceable.&lt;/strong&gt; AI can't replicate years of context. It can't replicate your gut feel. It can't replicate the nuanced decisions you make based on things that aren't in any database.&lt;/p&gt;

&lt;p&gt;But AI &lt;em&gt;can&lt;/em&gt; handle the repetitive, error-prone, time-sucking parts of your workflow. The parts that drain your energy and leave you exhausted before you even get to the interesting work.&lt;/p&gt;

&lt;p&gt;The goal isn't to build an AI that does everything. The goal is to build a system where &lt;strong&gt;AI handles the grunt work, and you handle the strategy.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's the powerful combination. That's the future.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thought (For Fellow System-Lovers)
&lt;/h2&gt;

&lt;p&gt;If you have a ritual—whether it's book fairs, grocery shopping, or planning vacations—don't just &lt;em&gt;do&lt;/em&gt; it. &lt;strong&gt;Study it.&lt;/strong&gt; Map it. Find the friction points.&lt;/p&gt;

&lt;p&gt;Then ask yourself: &lt;em&gt;"What would I build if I had a few hours and a decent API key?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;But more importantly: &lt;em&gt;"What part of this requires my unique expertise, and what part can I offload to automation?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The answer to that second question is where the magic happens.&lt;/p&gt;

&lt;p&gt;Because when you combine human intuition with algorithmic optimization, you don't just buy better books.&lt;/p&gt;

&lt;p&gt;You become unstoppable.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;P.S. — My folded A4 sheets from all 11 years are neatly archived in a file. Sometimes I flip through them—just to see how my taste has evolved, what I almost bought, what I'm glad I skipped. Never forget where you started. And never forget what you bring to the table—AI doesn't replace that. It just gives you more time to use it.&lt;/em&gt;&lt;/p&gt;




</description>
      <category>ai</category>
      <category>productivity</category>
      <category>strategy</category>
    </item>
    <item>
      <title>Who Am I?</title>
      <dc:creator>Kandeepa Sundaram</dc:creator>
      <pubDate>Fri, 03 Jul 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/kandeepa_sundaram/who-am-i-4iao</link>
      <guid>https://dev.to/kandeepa_sundaram/who-am-i-4iao</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The cognitive tax of Git identity management — and how I fixed it&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I still ask myself this question before every commit: &lt;em&gt;Who am I right now?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That hesitation. The finger pause. Not philosophy. Just &lt;del&gt;Gut&lt;/del&gt; Git feeling.&lt;/p&gt;

&lt;p&gt;I've pushed personal commits to client repos. I've also done the reverse — work identity on open-source PRs. Nothing broke immediately. But in regulated environments, that wrong name starts an audit conversation nobody wants to have.&lt;/p&gt;

&lt;p&gt;After nearly two decades of this, I've realised the most expensive bugs aren't in the code. They're in the seams &lt;em&gt;around&lt;/em&gt; it. Git identity is one of those seams. And almost nobody talks about it.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Four Flavours of This Pain
&lt;/h2&gt;

&lt;p&gt;Here's the thing: I don't work under a single identity anymore. Neither do you.&lt;/p&gt;

&lt;p&gt;One hour I'm pushing to my company's GitHub org. Next, I'm debugging a freelance client's GitLab repo. Then I'm patching an open-source project I maintain. Each one expects a different email, a different SSH key, maybe a GPG signature if the org requires signed commits.&lt;/p&gt;

&lt;p&gt;Git is brilliant at tracking changes. It's terrible at tracking &lt;em&gt;intent&lt;/em&gt;. It doesn't know who I meant to be — it just uses whatever profile happened to be active last. That gap? That's where the friction lives.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The wrong name on a commit.&lt;/strong&gt; You write an hour of code, push, and someone pings you: "Hey, this came from your personal account." Now you're amending, force-pushing, and explaining yourself to someone who doesn't care about Git — they just want the fix. The code was fine. The identity wasn't.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The endless shuffle.&lt;/strong&gt; &lt;code&gt;git config user.email "work@company.com"&lt;/code&gt;. Later: &lt;code&gt;git config user.email "me@gmail.com"&lt;/code&gt;. Each switch takes ten seconds. Over a year, that's hours. And one forgotten switch undoes all of it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key chaos.&lt;/strong&gt; Separate SSH keys per account. Signed-commit requirements per org. Pick the wrong one, and your ten-second commit turns into a debugging session or a rejected pipeline. You're not writing code anymore — you're playing key-ring roulette.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The cognitive tax.&lt;/strong&gt; This is the one that hurts most. It's not the time. It's the interruption — that fraction of a second where your brain leaves the problem you were solving and asks: &lt;em&gt;am I the right person right now?&lt;/em&gt; That fracture in flow state is more expensive than any of the others. Because you don't just lose the seconds. You lose the immersion.&lt;/p&gt;




&lt;h2&gt;
  
  
  The DIY Rabbit Hole
&lt;/h2&gt;

&lt;p&gt;I did the math one week. By Wednesday, I'd already lost count.&lt;/p&gt;

&lt;p&gt;Not because I'm disorganised. Because every repo, every client, every org has its own rules — and Git, for all its brilliance, has no mechanism to say &lt;em&gt;"you're in the work directory, here's your work hat."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I tried to fix it the way any engineer would. Aliases. Shell scripts. A half-baked &lt;code&gt;direnv&lt;/code&gt; setup that worked 80% of the time and failed catastrophically the other 20. Each time, I'd patch one hole, and a new context would open up — different SSH key, stricter GPG policy, a client who wanted commits signed with their specific subkey.&lt;/p&gt;

&lt;p&gt;I even tried the obvious shortcut: &lt;code&gt;gh auth switch&lt;/code&gt;. It's a toggle. You flip it, it changes your GitHub context, but it doesn't touch your global Git config. It doesn't remember that this directory needs a specific SSH agent. It doesn't manage GPG signatures. It's a solution for bouncing between GitHub accounts — but it doesn't solve the core cognitive problem: the decision-making. A manual light switch when I needed a motion sensor.&lt;/p&gt;

&lt;p&gt;But the real WTF? It wasn't any of that. It was realising I'd just accepted this as normal. Like pausing before every push to mentally run a checklist was just... part of the job.&lt;/p&gt;

&lt;p&gt;That's when I stopped blaming myself and started looking at the seam.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Organizational Paper-Cut
&lt;/h2&gt;

&lt;p&gt;And I'm not alone in this. What's a paper-cut for me is a process cost at scale.&lt;/p&gt;

&lt;p&gt;Senior engineers burn time on other people's auth failures. New hires lose their first hour to Git setup instead of shipping code. In regulated environments, a mis-attributed commit isn't just embarrassing — it's an audit flag. The individual friction becomes organizational drag.&lt;/p&gt;

&lt;p&gt;The code is almost never the problem. The identity attached to it is.&lt;/p&gt;




&lt;h2&gt;
  
  
  Enter Grit
&lt;/h2&gt;

&lt;p&gt;So I built something that sits exactly at that seam.&lt;/p&gt;

&lt;p&gt;Not another wrapper. Not a custom Git command you have to remember. A background daemon that watches where you're working and applies the right identity &lt;em&gt;before&lt;/em&gt; you commit. Automatically.&lt;/p&gt;

&lt;p&gt;I called it Grit.&lt;/p&gt;

&lt;p&gt;The design was simple: &lt;strong&gt;make the decision once, then forget it exists.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of switching configs manually, Grit remembers which identity belongs to which context. You tell it once — "this directory is work, this remote is my open-source account, this repo needs a signed commit" — and it handles the rest.&lt;/p&gt;




&lt;h2&gt;
  
  
  How It Actually Works
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Detection rules.&lt;/strong&gt; Define patterns once — directory paths, remote URLs, even repo names. Grit matches where you are and applies the right profile. No commands, no toggles.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/work/bank-client/*     → Work Profile (SSH: work-key, GPG: on)
~/oss/*                  → Personal Profile (SSH: personal-key, GPG: off)
github.com/my-company/*  → Corporate Profile (signed commits required)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Pre-commit protection.&lt;/strong&gt; This is the part I'm most proud of. A Git hook that verifies your identity &lt;em&gt;before&lt;/em&gt; the commit is created, not after you've already pushed and someone points out the mistake. It's defense-in-depth — the daemon handles the happy path, the hook guards the edge cases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Per-profile keys.&lt;/strong&gt; Each identity carries its own SSH key and GPG signing config. No more debugging which agent loaded which key. No more rejected pipelines because you used the wrong signature.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Session memory.&lt;/strong&gt; Grit restores the right identity when you return to a repo. Open a project you haven't touched in months — it picks up where you left off.&lt;/p&gt;

&lt;p&gt;And it runs quietly in the background. Windows, Linux, macOS. Offline-first. No cloud, no telemetry, no account required.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Hard Part
&lt;/h2&gt;

&lt;p&gt;The hardest part wasn't the switching. That's one shell command. The challenge was building a decision engine that handles ambiguity gracefully.&lt;/p&gt;

&lt;p&gt;What happens when a path matches two rules? What if there's no rule? What if the remote URL doesn't match anything I've defined?&lt;/p&gt;

&lt;p&gt;I built a fallback chain: explicit &lt;code&gt;.grit&lt;/code&gt; file in the repo → directory rules → remote patterns → explicit session override → global config. There's always a fallback, and you always know which one applied.&lt;/p&gt;

&lt;p&gt;That's the architectural muscle I've spent two decades building — pointed at a paper-cut I lived with every single day.&lt;/p&gt;




&lt;h2&gt;
  
  
  Try It Today
&lt;/h2&gt;

&lt;p&gt;It's on PyPI if you want to give it a shot:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;grit-cli

grit setup            &lt;span class="c"&gt;# one-time init&lt;/span&gt;
grit profile add      &lt;span class="c"&gt;# add your identities&lt;/span&gt;
grit session &lt;span class="nb"&gt;set &lt;/span&gt;work &lt;span class="c"&gt;# set context for this repo&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once your detection rules are in place, you stop running these commands. Grit just... works.&lt;/p&gt;

&lt;p&gt;The best developer tools are the ones you stop noticing. Software is complex enough; the right Git identity should just be applied, every time, without costing you a single thought.&lt;/p&gt;

&lt;p&gt;Grit is MIT-licensed and open source. Try it on your messiest repo today. If it breaks, open an issue — I'm fixing things within 24 hours right now.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/Kandeepasundaram/Grit" rel="noopener noreferrer"&gt;See the code on GitHub →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If you've ever force-pushed to fix a wrong-identity commit — what happened? I'd genuinely love to hear it.&lt;/em&gt;&lt;/p&gt;

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