Founder story

The obsession, counted.

Two hundred and sixteen days this year, at forty. Two hundred and thirteen thousand lines of code. Four hundred and seventy provable hours. And why the white belt I tied at twenty-eight is where all of it started.

Aditya Singh, founder of KombatOS

Aditya Singh

Founder, KombatOS14 min read

On 26 August, Lex Fridman published his second conversation with David Heinemeier Hansson, the creator of Ruby on Rails. It runs five hours and twenty-two minutes. I listened to most of it at my desk, at night, with an agent building a feature in the terminal next to the player, which is the only honest way I could have listened to it.

DHH spent twenty years handcrafting code and being loud about how much the craft mattered. In that episode he says the quiet part out loud: agents now write the code, and he is fine. Not because the craft died, but because it moved. “When I’m working in Ruby code and asking agents to make changes, I still sweat the details,” he says, and then admits the economic payoff of that sweat is shrinking fast. What is not shrinking is the part he calls taste. “Most organizations don’t know what they want. They’re bottlenecked on ideas, vision, taste.”

He draws a line I have been trying to draw for months. Vibe coding is telling an agent to build something and never looking at what it built. Agentic engineering is the same speed with the details still sweated, by someone who knows what wrong looks like. And he keeps coming back to one word that has nothing to do with software: mission. “I have a mission. I’m going somewhere. I can channel all this new power towards a singular goal.”

That is the piece most people miss when they talk about AI and building. The tools are real. DHH puts it as decades of progress arriving in nine months. But power without a direction is just a faster way to be busy. Obsession is the precursor. The tools only decide how far the obsession gets to travel.

You can find the episode at lexfridman.com. This post is what it made me want to do: count my own obsession honestly, and say where it came from.

The precursor

Obsession is the precursor. With an art, it is also the reward.

A white belt at twenty-eight

I walked into a karate hall at twenty-eight. I am forty now, so this is not a young man’s story about finding himself. I went in as an adult who ran a company during the day and had noticed that nothing in his life had a syllabus anymore. Not as a child pushed in by a parent, not as a teenager with a tournament in mind. I tied a white belt and stood at the back of a line of people half my age.

Here is what I did not understand then and understand now. Obsession on its own is a fuel, and fuel does not care what it burns. I had been obsessed with games, with work, with the next thing. An art gives the fuel a shape. It has a lineage that was there before you and will be there after you. It has a floor you cannot fake your way across. It hands you a next objective every single evening, and it hands the same objective to everyone in the room, which is why a hall full of strangers becomes a family faster than any office I have run.

Now, at forty, I have stood in that hall in almost every role it offers. I was the white belt who did not know where he stood. I was the parent, when my son started training under a different coach and I discovered what it is like to pay the fees and have no idea what your child is actually learning. I was the coach, trying to hold sixty journeys in my head. I was the volunteer at the tournament desk with the tie sheets and the spreadsheet. With the blessing of my Sensei I became the owner of an academy. Somewhere in there I became a black belt, then a second degree black belt.

And then I became the sixth thing, the one nobody in the sport had been before: the person who builds its software. One blind spot, met from every chair in the room, and then the tools arrived that let one person do something about it at night.

That is why I say an obsession is more fulfilling when it has an art under it. The art gives it meaning. The meaning is what makes the three in the morning bearable. I told the longer version of how the build started in Why I built KombatOS. This post is the ledger.

The nuts and bolts

Here is the part I left out of the first post, and DHH’s conversation is the reason to put it in now.

I did not come to this as a manager who discovered a magic box. I came to it as someone who has been writing code, on and off, for most of his life. In school, in the early 2000s, I won Olympiads in coding. I took an A in every computer course I ever sat, at school and again in engineering. I worked briefly at Infosys as a systems engineer, which is where I learned how open systems actually fit together, the unglamorous plumbing between one machine and the next. Over the years I have dabbled in SQL, C++, Java and, as it happens, Ruby on Rails, which is the framework DHH built and the reason I first knew his name.

None of that makes me a great programmer. It makes me a person who knows what wrong looks like. When an agent hands me a query that will scan a whole collection on every request, or a permission check that trusts the wrong field, or a migration that would wipe what it was meant to move, I recognise it, because I have written all three by hand and paid for them. That recognition is the entire difference between the two things DHH separates: vibe coding, where you never look, and agentic engineering, where the speed is the same and the details are still sweated.

DHH says on the episode that he hates the word agentic. Loved or hated, call it what you like. My position is that to do it today you must know the nuts and bolts. Maybe tomorrow you will not. The tools are moving fast enough that I would not bet against it. But that is not today, and the people shipping real systems to real academies at three in the morning are the ones who can read what the agent wrote.

Which brings me back to his three bottlenecks: ideas, vision, taste. The first two you can bring from anywhere. My ideas come from the hall, not from a terminal. The third one comes back to the nuts and bolts every time. Taste in software is the residue of having done it by hand, of knowing which of the three options the agent offers will still be standing in a year. And that is the hole we are heading into right now. If the next generation never writes the bad query themselves, where does the taste come from? I do not have the answer. I only know that mine came from twenty-odd years of doing it the slow way, and that the agent gets it for free every night.

An academy owner at a desk early in the morning, laptop open, the hall still dark behind

What two hundred and sixteen days look like

Every number below was pulled from the repository, the working transcripts and the production database on 5 September 2026. Nothing was rounded up.

216

days since the first commit

213,732

lines of code live today

2,445

commits on main

97

pull requests shipped

Git is not the starting line

The repository opens on 2 February 2026 with an empty commit from an AI agent. The next morning it receives a working prototype: 77 files, about 6,800 lines. That prototype was built on Emergent, an AI app builder, in the weeks before, and the weeks before that are not in git at all. So the first honest thing to say about the count is that it starts late.

Emergent kept auto-committing until 5 March. Fifteen active days, 1,165 commits, and a codebase of roughly 61,000 lines by the end of it. On 6 March I took the keyboard myself, with Claude Code, and the repository changed character overnight. Auto-commits became hand-authored, reviewed, tested work. From that day to this one there are 1,280 of my own commits across 94 active days, 97 pull requests, and about 153,000 net new lines.

The Emergent month is under-counted by construction. One auto-commit can hold a whole afternoon. Treat every Emergent number in this post as a floor.

Two hundred and thirteen thousand lines

There are 213,732 lines of application code in production today. 104,933 of them are Python on the backend, across 306 files and 631 API endpoints. 108,258 are React on the frontend, across 482 files and 163 screens. If you prefer books, that is about three and a half copies of War and Peace.

The live count undersells the work, because code gets rewritten. Across the whole history 427,480 lines were written and 72,616 were later deleted or replaced. Beside the code sit 32,316 lines of written plans, handoffs, specs and session logs, because a one-person night shift that does not write things down forgets them by the next night.

Lines of code at the end of each monthEmergentWith Claude Code
  • 3 Feb import6,822
  • February43,845
  • March74,998
  • April92,523
  • May92,661
  • June120,607
  • July161,817
  • August210,686
  • 5 September213,732

The pace went up, not down

Side projects have a familiar shape: a burst, then a fade. This one did the opposite. 143 commits in March, 86 in April around the first live tournament, then 204 in June, 409 in July and 391 in August. May is the quiet month, and it was quiet on purpose: the Sanshinkan post-event cycle was running and the multi-academy rebuild was being designed, not typed.

Of the hand-authored commits, 232 are features and 164 are fixes. 95 of the 97 pull requests merged, and every merge to main is a production deploy. There is no staging environment. There are academies.

Commits per monthEmergent auto-commitsMy commits
  • 1,026Feb
  • 282Mar
  • 86Apr
  • 2May
  • 204Jun
  • 409Jul
  • 391Aug
  • 45Sep

Half of it was built between midnight and 7 AM

I have kept one rule for thirteen years: work ends around six in the evening, and the evening belongs to the hall. That rule shows up in the commit history as a hole in the day. Almost nothing between seven and eleven in the morning. A small shoulder in the afternoon. Then the real shift, which starts after the last class and runs until the sun comes up.

Fifty-one percent of my commits land between midnight and seven in the morning. Thirty-one percent land on a weekend, and Saturday is the busiest day of the week. There was a stretch from 27 June to 19 July with a commit on every one of twenty-three days. The longest single sitting started at nine in the evening on 3 July and ended just after six the next morning.

My commits by hour of dayMidnight to 7 AM holds 51% of them
Midnight6 AMNoon6 PM

How many hours is that? I do not have a timesheet, so I did the conservative thing. Commits less than two hours apart count as one sitting, and each sitting is credited from forty-five minutes before its first commit to its last commit. That method gives 187 sittings and a little over 470 hours since March, plus roughly seventy for the Emergent month. It is a floor. Testing on production, WhatsApp support with academy owners, and the visits to halls to watch people use the thing leave no trail in git.

470+hrs

provable from commit timestamps alone

A floor, not a total.

23

day streak

27 June to 19 July, no day off

9.2hrs

longest single sitting

3 July, 9 PM to 6 AM

31%

of commits on weekends

Saturday is the busiest day

Thirty days, in conversation

This is the part DHH was describing, seen from the inside. Claude Code keeps a transcript of every working session, and the retained window covers 6 August to today. In those thirty days I wrote 10,419 prompts and received 18,464 answers, edits and checks back. That is about 350 prompts a day, over 53 sessions, many of which ended after sunrise.

The prompts are not “build me a CRM.” They are the details being sweated. Why a session pack must be recounted after every attendance write instead of ticked down by one. Why a coach seat must never see another member’s fees. Why an approved registration means in the bracket, and a payment is information, never a silent gate. Every rule an academy owner taught me is written into a memory file, and the platform reads its own memory before it touches anything. There are 109 of those notes and 51 session logs.

10,419

prompts I wrote

in thirty days, about 350 a day

18,464

answers, edits and checks back

264 MB of transcript

53

working sessions retained

many of them past sunrise

160

memory notes and session logs

the platform remembers its own decisions

What changed

The agents write the code. The thirteen years decide what the code is for.

The surface area

Effort is only interesting if it turned into something. Here is the platform by the numbers a developer would ask for, and then by the jobs an academy owner would recognise.

Backend

  • API endpoints631
  • Data collections in code105
  • Automated tests1,077
  • Ops and migration scripts263
  • Email and WhatsApp senders22

Frontend

  • Screens163
  • React components408
  • Seats designed for6
  • Android builds uploaded to Play5
  • Disciplines with curriculum presets5

Process

  • Pull requests97
  • Branches cut242
  • Files touched, all time1,294
  • Written plans, specs and logs145
  • Live events run on it20

Eight jobs, one system

Tournaments

  • Registration and paid checkout
  • Weigh-in, check-in, ID cards
  • Bracket generation, mat queue
  • Karate, BJJ and MMA scoreboards
  • Public results and athlete records

Members

  • Profiles, families, households
  • Plans, session packs, invoices
  • GST-inclusive billing, UPI
  • Excel import with a dry run
  • Leads and follow-up worklist

Attendance

  • Face-scan kiosk
  • Phone and PIN check-in
  • Class timetable and batches
  • Streaks and pack recounts

Belts and curriculum

  • Belt systems per discipline
  • Universal 5x3 curriculum frame
  • 6,604 syllabus aspects, 1,225 videos
  • Belt tests, letter grades, certificates

Engagement

  • WhatsApp via AiSensy
  • Email with per-academy templates
  • Reminders with chosen audiences
  • In-app notification centre
  • Web push to phones

Portals

  • Member app with the journey view
  • Parent portal, multi-child
  • Coach seat with privacy redaction
  • Waivers and consent, signed

Recognition

  • Hall of Fame nominations
  • Appreciation cards
  • Achievements and trophy cabinet
  • Fight team lineage

Platform

  • Per-academy currency and region
  • Billing console, viewer seats
  • Android app on Play Store
  • SEO pages for every event

Not a demo. It runs academies.

These are live document counts from the production database on the morning I wrote this. They are the numbers I care about most, because every one of them is a person in a hall somewhere who did not have to fill in a form twice.

44

academies set up

105 clubs registered

1,211

member profiles

957 login accounts

7,558

attendance check-ins

305 faces enrolled for scan

753

belt promotions recorded

109 grading applications

9,714

messages delivered

WhatsApp, email, reminders, alerts, in-app

12,104

curriculum items

3,531 progress marks by coaches

674

tournament registrations

20 events, 157 brackets, 839 fighters

428

waivers signed digitally

309 consent decisions, 490 achievements logged

Messages delivered is WhatsApp 1,839, email 1,399, reminders 2,248, alerts 2,457 and in-app 1,771. The first live event was the Sanshinkan All India Open at Talkatora on 12 April, about 500 athletes. The BJJ module ran its first nationals with SJJIF on 26 July.

What each month put on the mat

February

  • Prototype on Emergent
  • Tournament registration and brackets
  • Live scoring, the first scoreboard

March

  • I take the keyboard
  • Sanshinkan onboarding, 1,500 entries
  • Demo feedback from senseis

April

  • Sanshinkan All India Open, about 500 athletes at Talkatora
  • Check-in desk, ID cards, medals

June

  • Multi-academy rebuild of the CRM
  • Face attendance
  • Rebrand to KombatOS

July

  • BJJ module, SJJIF Nationals
  • Paid checkout, weigh-in, mat queue
  • Pricing launched

August

  • Parent portal, family profiles
  • Notification revamp, belt-test arc
  • Billing enforcement, Play Store
  • Curriculum on every academy

September

  • Session packs, GST-inclusive plans
  • Reminder audiences
  • One-door student sign-up
  • Web push notifications

Next

  • USD and EUR payment rail
  • Faster face scan
  • Getting-started checklist
  • WhatsApp coexistence on Meta
A grading day in a karate hall, students seated in rows while a black belt is examined

Built at 3 AM so your 6 AM class just works

The effort is real, it is ongoing, and it is pointed at your academy.

I counted all of this for the academy owners and coaches who run on KombatOS, because they deserve to know what is behind the thing they trust with their students. But I also counted it for myself, and for anyone who listened to that five-hour conversation and wondered whether it applies to them.

It does, on one condition. DHH is right that the code is no longer the scarce thing. Taste is, and taste comes from having done it. Direction is. A mission is. And the surest way I know to find one is to walk into a hall at whatever age you are, tie a white belt, and stand at the back of the line until the art hands you a problem you cannot stop thinking about. The obsession comes first. The art makes it worth having. The tools just decide how far it gets to travel.

Mine has travelled two hundred and sixteen days so far. Same dopamine. Bigger quest.

Aditya Singh, founder of KombatOS and second degree black belt, in a fighting guard

Aditya Singh

Founder of KombatOS. Managing Director and co-founder of Expedify, an agentic AI company. Won coding Olympiads at school and worked as a systems engineer at Infosys before running companies. Started karate at twenty-eight, forty now, second degree black belt, and runs an academy.

Run your academy on the thing all of this built

Members, belts, attendance, WhatsApp and tournaments in one system. Free to start.

We use cookies to keep you signed in, remember your preferences, and improve KombatOS. See our Privacy Policy.