The journal

Everything I'm learning, written down as it happens.

Honest notes from shipping a real product. The practices I fought, the incidents I survived, the lessons that only made sense months later — and, sometimes, where my head actually is.

29 of 29 entries shown

September 2026

1
EngineeringSep 12, 20268 min

I revised all night. The answer that landed was the one I'd built.

A cold LinkedIn message turned into a referral, the referral turned into a Java full stack interview I'm not qualified for on paper, and I crammed for one night to get there. The interviewer overslept. Then the only answer that came out without effort was the architecture nobody had to remind me about.

arc: cold message → referral → an interview for a stack i don't have → one night of cramming → the crammed answers held, barely → the built answer needed no cramming → round two

August 2026

3
EngineeringAug 22, 20263 min

The first prompt gets you 60%. The last 15% is the whole job.

I started counting my prompts. One prompt gets a working prototype. A few more get you to 85%. Then the curve flattens and the remaining stretch can take hundreds — and almost none of them are feature requests. They're me correcting things the model assumed.

arc: one prompt gets a working prototype → a few more reach 85% → the last stretch takes hundreds → and they're not features, they're corrections
ProductAug 22, 20265 min

The principal gets a salary too

Our first real school used the app for a week and sent back thirteen points of feedback. Not one of them was about architecture. Almost all of them were about the model of the world I had quietly assumed while building it.

arc: signed our first pilot school → they used it for a week → thirteen points of feedback → none about code, all about the world i'd assumed
PersonalAug 11, 20267 min

I don't know where I'm going. And I've stopped pretending I do.

A diary entry, not a lesson. I got most of the things I once wished for, and I still feel like I'm waiting. This is the honest state of me in August 2026.

arc: i got the things i wished for → none of it felt the way i expected → the fear sitting underneath the ambition → i'd rather write this version of me down than pretend past it

July 2026

5
EngineeringJul 27, 20266 min

Two years of vibe coding, and a screening round I deserved to fail

I didn't write code by hand for two years. I knew the architecture, I shipped constantly, and I let AI do the rest. Then someone asked me the basics and I had nothing. This is the honest version.

arc: two years of vibe coding in a very good environment → a referral interview that never read my resume → i couldn't answer the basics → the AI was never the problem, what i did with the time it saved me was
a 2-part story · the payments saga
PersonalJul 19, 20266 min

I almost posted a rant about my college. Then I looked at the medal again.

I got the JNTUGV gold medal for the highest marks in AIML across every affiliated college. I had a rant drafted, with the line already written: recognition after success doesn't erase how they treated me before success. I didn't post it — because when I look at the medal, I don't see them.

arc: a gold medal i knew i'd get → the rant i had ready → the medal doesn't remind me of them at all → it reminds me of the people who believed before there was anything to believe in
EngineeringJul 7, 20266 min

I asked it to raise a PR. It pushed to development.

I was working on two tickets and I stayed on the same branch for both, because they touched completely different files. That was the assumption that broke. I asked it to raise a PR, it pushed into development instead, and I only found out the next morning.

arc: two tickets on one branch because they touched different files → i asked it to raise a PR → it pushed into development → the branch it created had nothing in between, so the push carried development with it

June 2026

20
EngineeringJun 12, 20262 min

AI can write the SQL. You still have to read the schema.

My lead read one AI-generated migration for five seconds and asked why I was adding a column for data we already store. I had no answer. That question became a full schema audit.

arc: let AI write the migration → it runs clean → my lead reads it in 5 seconds → a migration that runs ≠ a schema that's right
EngineeringJun 12, 20263 min

I handed off a bug without reading it. My lead opened the network tab.

A search bug in the faculty tab got fixed in the frontend, by loading all 1000 records into the browser and filtering there. There was no API call at all. I never read the ticket.

arc: search plus faculty tab, so i called it a frontend bug → he opened the network tab → no API call at all → i pattern-matched on the words in the ticket
EngineeringJun 12, 20264 min

The AI length-checked a dropdown — and people call this AGI

Gender is a dropdown — three options. The 'top-tier' model guarded it with a length check that accepts 'banana', then burned 100k tokens answering a question I never asked. This is the intelligence we're told will take our jobs.

arc: a 'top-tier' ai length-checks a 3-option dropdown, then burns 100k tokens answering the wrong question → it doesn't infer intent, it just pattern-matches → it's a tool, not a mind. validate everything.
EngineeringJun 12, 20262 min

The service imported the adapter directly. The app ran fine anyway.

Our backend goes route to controller to service to repository to adapter. The AI skipped a link and imported the adapter straight into the service. It ran perfectly, so I missed it.

arc: the PR ran green so i reviewed it as done → my lead read the imports → the app working told me it runs, not that it belongs
a 3-part story · the schema-sync saga
EngineeringJun 11, 20264 min

We lowered the price in one place. We charged the old one.

We cut plan prices for rural schools and shipped the change to the landing page, deliberately deferring the rest as a tracked follow-up. That was a reasonable call. It became a bug anyway — because 'the price' was never one thing to defer. It was three things wearing the same name, in two repositories.

arc: cut the price for rural schools → ship it to the landing page, defer the rest on purpose → the amount actually charged came from the copy nobody updated → a deferral is only safe if the thing you deferred is one thing
ProductJun 10, 20264 min

Nobody is going to remember to pay us every month

I finished the subscription flow and I was proud of it. Checkout worked, signatures verified, the webhook activated the school. Then my lead asked where the auto-renewal option was, and I realised I'd built a payment — not a subscription. The gap wasn't in the code. It was in what nobody had written down.

arc: shipped the subscription flow → 'where's auto-renewal?' → we never captured it → razorpay already did it, we just weren't listening → correct for month one, incomplete for month two
StartupJun 9, 20262 min

I saw a quiz feature. My lead saw a product family.

The principal gave us the quiz idea and my brain went straight to screens and scoring. Jagan sir gave it a name, a subdomain, a logo and a completely different pitch.

arc: i heard a feature → he heard a company → same software, a different story → the story is what the principal bought
StartupJun 8, 20266 min

Building Vinodam: the product that taught me what shipping really means

A principal's challenge, a prototype built in secret, and 300 students live on event day. How our quiz platform was born.

arc: assumptions → a principal's challenge → built in secret → 300 students live
ProductJun 7, 20261 min

I kept forgetting who owed me money. So I built Roots.

My tracking system was a notepad app and my own memory. The notepad never forgot anything, but it never calculated anything either.

arc: notepad plus my memory → the calculating part was still me → built the app so the remembering is not mine
EngineeringJun 6, 20261 min

Eight graphs. Eight API calls.

Claude built me a school dashboard with beautiful graphs and it rendered fast on my screen. Then my lead asked why one page was hitting the backend so many times.

arc: beautiful graphs, looked done → why is this page hitting the backend so many times → the network tab → i was counting per graph, the server counts per page load
ProductJun 6, 20261 min

My father scolded me over a bill. So I built an app.

Years of typing his paint-contract bills into MS Word with a calculator in hand. The mistakes were always in the same place, and it was never the typing.

arc: years of doing his bills by hand → wrong totals on real bills → the mistakes were all arithmetic → built the part a machine never gets wrong
EngineeringJun 5, 20261 min

Pagination is a contract, not a frontend feature

My frontend was showing pages and the backend was still sending the entire list every time. It looked complete and it was not complete.

arc: frontend pagination looked perfect → my lead asked where the backend pagination was → i was only hiding rows → i gave claude a frontend question so i got a frontend answer
EngineeringJun 4, 20264 min

The discount was ₹0 because two clocks disagreed by 0.7 seconds

A discount was approved. The certificate froze it as ₹0. Nothing in the code was wrong — new Date() is what every codebase writes. But the database stamps its own time, my machine was 0.76 seconds behind, and for a fraction of a second an approval that already happened looked like it hadn't.

arc: a discount freezes at ₹0 → the logic reads correct → two clocks, 0.76s apart → 'the app clock equals the db clock' was an assumption nobody wrote down
ProductionJun 4, 20261 min

The receipt that kept rewriting itself

The payment was correct, the database was correct, nothing crashed. The receipt was answering the wrong question.

arc: wrong amount on a receipt with no error anywhere → receipts were rebuilt on every download → we were asking what the fees are, not what they were
EngineeringJun 3, 20261 min

Tests don't find bugs. They stop future ones.

I thought tests were for finding bugs. Then I fixed one small thing and broke something completely unrelated, in code I had no reason to open.

arc: the feature works so why test it → i broke unrelated code and did not notice → tests protect working code from future me
ProductJun 2, 20261 min

When I learned an app is not the same as a brand

My lead pulled me up on the same font and colors in every PR review. I thought it was the least important part of the ticket.

arc: i never cared about design → forced on it in every PR review → consistency is the thing you only notice when it is missing
EngineeringJun 1, 20262 min

I fought my team lead over extracting strings into constants

I thought it was busywork. The text was right there in the component, so why move it. Then a school asked for the product in their regional language.

arc: i thought it was busywork → did it half annoyed → a school asked for a second language → i was judging the code by today's requirement