Aleks deLab All articles
Lab Notebook

I Mined a Decade of Git Commits and Found a Version of Myself I Didn't Recognize

Aleks deLab
I Mined a Decade of Git Commits and Found a Version of Myself I Didn't Recognize

Photo: developer terminal git log green code on dark screen late night desk, via www.shutterstock.com

There's a folder on my backup drive called old_stuff_dont_delete and it contains every repo I've touched since 2015. Client work, freelance gigs, hackathon disasters, a SaaS idea I abandoned in a weekend, at least four versions of the same to-do app. Roughly 10 years of commits, sitting there like sediment.

Last month, on a slow Friday, I wrote a script to crawl all of it. Not for a portfolio. Not for a retro. Just pure, nosy curiosity: what does my Git history actually say about how I work, as opposed to what I tell people about how I work?

The answer was humbling in specific, measurable ways. Here's the full writeup, plus the script approach so you can run the same archaeology on yourself.

The Setup: 45 Minutes and One Messy Script

You don't need fancy tooling. I used git log with a custom format piped into a CSV, then dumped everything into a Python notebook with pandas. For each commit I captured:

The local-time thing is important. Git stores everything in UTC, and if you analyze raw timestamps you'll conclude you're a 4am coder when really you're a Pacific Time night owl who pushes at 9pm. Convert first, judge later.

Finding #1: My Peak Hours Are Not What I Claim

Ask me when I do my best work and I'll say "mornings, coffee in hand, fresh brain." The data says my highest-volume, longest-lived commits — the ones that survived without being reverted — land between 1pm and 4pm. Morning commits exist in volume, but they get amended and rewritten at a suspicious rate.

My 10am self is a warm-up act. My 2pm self is the headliner.

Once I saw it, it was obvious: mornings are when I read, plan, and answer emails. Afternoons are when I actually build. I'd been scheduling my calendar around a myth about myself for a decade.

Finding #2: The 2am Commits Are a Crime Scene

I tagged every commit pushed between midnight and 5am and traced what happened next. The pattern is brutal:

The correlation isn't a coincidence. Late-night commits happen when I'm tired, stubborn, and refusing to let a bug win. The bug usually wins. The repo remembers.

Finding #3: Every Demo Had a Shame-Spiral Signature

This one made me laugh out loud. I cross-referenced commit spikes against calendar events I could reconstruct — launch dates, portfolio reviews, that one interview take-home I still think about.

Before every single demo or deadline, the same arc: a week of near silence, then a 48-hour burst of frantic commits with messages like "cleanup," "final cleanup," "actually final," and my personal favorite, "rename everything."

I don't work steadily toward deadlines. I work in terror-fueled sprints and then rename variables to feel in control. Knowing this is weirdly comforting. It's not a character flaw; it's a pattern, and patterns can be planned around.

Finding #4: The Graveyard Has a Theme

I flagged every repo with no commits in 18+ months. Twelve of them. Reading through the abandoned branches, one theme jumped out: every dead project died at the exact same stage — right after the first working prototype, right before the boring infrastructure work.

I don't lose interest in ideas. I lose interest in auth, deployment, and error handling. Every. Single. Time. That's not a creativity problem, that's a handoff problem — and it told me exactly which kinds of tasks I should be automating or borrowing boilerplate for instead of pretending I'll suddenly enjoy them.

Run Your Own Archaeology

If you want to try this, the short version:

  1. Export. git log --pretty=format:'%ad|%s' --date=iso-local across every repo you own, appended into one file.
  2. Convert timezones. Seriously. Do it first.
  3. Tag your repos as alive, dead, or client work so you can compare behavior across them.
  4. Look for three things: your real peak hours (measured by commit survival, not volume), your disaster hours (late-night revert rates), and your abandonment stage (where dead projects flatline).
  5. Write down one habit per finding. Not ten. One.

Mine were: protect the 1–4pm block like it's a client meeting, hard-stop pushes after 11pm (the repo can wait, morning-me cannot), and keep a boilerplate kit ready for the boring stage where projects go to die.

What the Time Machine Is Actually For

The strangest part of the whole exercise was the emotional whiplash. Reading a decade of your own commit messages is reading a diary you didn't know you were keeping — the panic, the overconfidence, the 2am hubris, the quiet Tuesday afternoon where everything just worked.

I went in expecting productivity insights. I came out with something better: proof that the version of me in my head and the version in the data were different people, and the one in the data is the one I actually have to schedule around.

The repo doesn't lie. That's the whole point of the lab — run the experiment on yourself, read the results, adjust the protocol.

If you run your own dig, I want to hear what your 2am commits look like. Mine say "asdf." Set the bar accordingly.

All Articles

Related Articles

I Re-Read Six Months of My Own Lab Notes. The Patterns Were Uncomfortable.

I Re-Read Six Months of My Own Lab Notes. The Patterns Were Uncomfortable.

I Turned My Side Project Into a Tamagotchi. It Died Twice.

I Turned My Side Project Into a Tamagotchi. It Died Twice.

Five Corpses in the Garage: How I Resurrected Dead Code and Got Three Interviews Out of It

Five Corpses in the Garage: How I Resurrected Dead Code and Got Three Interviews Out of It