<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Coder Legion - Recent posts tagged founder</title>
<link>https://coderlegion.com/tag/founder</link>
<description>Powered by Question2Answer</description>
<item>
<title>The 3 a.m. call: why every founder needs an Arun</title>
<link>https://coderlegion.com/32525/the-3-a-m-call-why-every-founder-needs-an-arun</link>
<description>&lt;p&gt;When I'm stuck badly enough, I call Arun.&lt;br&gt;
He's our CTO.&lt;br&gt;
He's the one person I trust to pick up at any hour.&lt;/p&gt;
&lt;p&gt;In &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/the-night-i-broke-production&quot;&gt;the night I broke production&lt;/a&gt;, he got a short section.&lt;br&gt;
Four lines and a photo.&lt;br&gt;
This is the longer version, because I think the idea deserves more than four lines.&lt;/p&gt;
&lt;p&gt;The idea is simple.&lt;br&gt;
Every founder needs one person who picks up.&lt;br&gt;
Not a mentor you email on Mondays.&lt;br&gt;
Not a group chat.&lt;br&gt;
One person, at any hour, who will actually answer.&lt;/p&gt;
&lt;h3 id=&quot;the-one-person-who-picks-up&quot;&gt;The one person who picks up&lt;/h3&gt;
&lt;p&gt;Arun picks up at any hour.&lt;br&gt;
Which, if you think about it, is frankly suspicious.&lt;br&gt;
Does he sleep? Is he three people?&lt;br&gt;
I've decided not to ask, in case the answer ruins it.&lt;/p&gt;
&lt;p&gt;If you want to know who he is, &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.arunvignesh.my/&quot;&gt;his portfolio&lt;/a&gt; does a better job than I would.&lt;/p&gt;
&lt;p&gt;What I think a person like that gives a founder is a floor.&lt;br&gt;
&quot;Stuck&quot; stops meaning &quot;stuck forever&quot;.&lt;br&gt;
The bad nights still happen.&lt;br&gt;
They just have a bottom.&lt;/p&gt;
&lt;p&gt;TrackMy Tech is bootstrapped.&lt;br&gt;
There's no board of investors waiting by the phone.&lt;br&gt;
There's Arichandran, our co-founder and director, there's Arun, and there's the rest of us.&lt;br&gt;
When something breaks, the people in the room are the plan.&lt;/p&gt;
&lt;h3 id=&quot;why-going-it-alone-is-harder-than-it-looks&quot;&gt;Why going it alone is harder than it looks&lt;/h3&gt;
&lt;p&gt;I'm not the first person to notice this.&lt;br&gt;
Paul Graham put &quot;single founder&quot; near the top of his essay &lt;a rel=&quot;nofollow&quot; href=&quot;https://paulgraham.com/startupmistakes.html&quot;&gt;The 18 Mistakes That Kill Startups&lt;/a&gt;.&lt;br&gt;
His reasoning is blunt.&lt;br&gt;
&quot;Starting a startup is too hard for one person.&quot;&lt;br&gt;
Even if you could do all the work yourself, he says, you need colleagues &quot;to brainstorm with, to talk you out of stupid decisions, and to cheer you up when things go wrong.&quot;&lt;/p&gt;
&lt;p&gt;That last part is the 3 a.m. call in one sentence.&lt;/p&gt;
&lt;p&gt;He also writes that &quot;the low points in a startup are so low that few could bear them alone.&quot;&lt;br&gt;
I've had a few low points.&lt;br&gt;
I can confirm they are, in fact, low.&lt;/p&gt;
&lt;h3 id=&quot;the-catch-the-people-can-also-sink-you&quot;&gt;The catch: the people can also sink you&lt;/h3&gt;
&lt;p&gt;Here's the uncomfortable flip side.&lt;br&gt;
The people around you aren't only your safety net.&lt;br&gt;
They can also be the thing that breaks.&lt;/p&gt;
&lt;p&gt;Noam Wasserman, who wrote &lt;em&gt;The Founder's Dilemmas&lt;/em&gt;, has studied this for years.&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://thecrimson.com/article/2012/4/9/hbs-start-noam-founder/&quot;&gt;The Harvard Crimson reported&lt;/a&gt; that his research drew on data from &quot;nearly 10,000 founders of technology and life sciences startups in the U.S.&quot;&lt;br&gt;
His main finding, as the Crimson summed it up: &quot;Startup companies are most likely to fail due to personal disagreements within their management teams.&quot;&lt;/p&gt;
&lt;p&gt;Not the market. Not the tech.&lt;br&gt;
The people.&lt;/p&gt;
&lt;p&gt;The same article notes that 73 percent of founders in his survey decided how to split equity in the first month.&lt;br&gt;
An equal split avoids tension early on, but can cause problems if a co-founder backs out later.&lt;br&gt;
In other words: the hard conversations don't go away if you skip them.&lt;br&gt;
They just wait for a worse moment.&lt;/p&gt;
&lt;p&gt;So I don't think the lesson is &quot;have a co-founder, done&quot;.&lt;br&gt;
I think it's &quot;have someone you trust, and do the work to keep that trust&quot;.&lt;/p&gt;
&lt;h3 id=&quot;trust-is-what-makes-the-call-possible&quot;&gt;Trust is what makes the call possible&lt;/h3&gt;
&lt;p&gt;There's a reason the 3 a.m. call works with one person and not with others.&lt;br&gt;
You have to be willing to say &quot;I've messed this up and I don't know why&quot; out loud.&lt;/p&gt;
&lt;p&gt;Amy Edmondson has a name for the condition that makes that possible.&lt;br&gt;
In &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.jstor.org/stable/2666999&quot;&gt;her 1999 paper&lt;/a&gt; she describes team psychological safety as &quot;a shared belief held by members of a team that the team is safe for interpersonal risk taking.&quot;&lt;br&gt;
She studied 51 work teams in a manufacturing company.&lt;br&gt;
Teams with more psychological safety showed more learning behaviour, and that learning behaviour was linked to better team performance.&lt;/p&gt;
&lt;p&gt;Her examples of learning behaviour are worth reading slowly: seeking feedback, sharing information, asking for help, talking about errors and experimenting.&lt;/p&gt;
&lt;p&gt;&quot;Asking for help&quot; and &quot;talking about errors&quot; are basically the job description of a 3 a.m. call.&lt;br&gt;
If you're scared of looking stupid, you don't call.&lt;br&gt;
You sit there alone for hours, checking the same code again.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.rahuldk.in/posts/every-founder-needs-an-arun/phone-screen-in-the-dark.jpg&quot; alt=&quot;A smartphone screen glowing in a dark room, showing app icons including the phone app&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Photo: &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/@pathum_danthanarayana&quot;&gt;Pathum Danthanarayana&lt;/a&gt; on &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/photos/t8TOMKe6xZU&quot;&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&quot;what-i-d-tell-another-founder&quot;&gt;What I'd tell another founder&lt;/h3&gt;
&lt;p&gt;None of this is a grand theory.&lt;br&gt;
It's my opinion, from someone who makes that call when he's stuck badly enough.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Decide who you'll call before the crisis.&lt;/strong&gt; Not during it. In the middle of an outage you won't think clearly enough to pick. Know the name now.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Make it mutual.&lt;/strong&gt; If you only ever call, it's not trust, it's a helpline. Pick up for them too. Be the person who answers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Say the embarrassing thing early.&lt;/strong&gt; The call only helps if you're honest about how badly it's gone. Edmondson's research is basically a long argument for this.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Have the awkward talks on a calm day.&lt;/strong&gt; Equity, roles, who decides what. Wasserman's findings suggest the skipped conversations are the ones that come back.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write things down so the call is rarer.&lt;/strong&gt; Passwords in the right place, deployment steps, when certificates expire, how to roll back. If the answer lives in one person's head, that person gets woken up a lot.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That last one matters more than it sounds.&lt;br&gt;
The goal isn't to call Arun more.&lt;br&gt;
The goal is to call him only when it really can't wait.&lt;br&gt;
He picks up at any hour. That doesn't mean he should have to.&lt;/p&gt;
&lt;h3 id=&quot;one-last-thing&quot;&gt;One last thing&lt;/h3&gt;
&lt;p&gt;Find your Arun.&lt;br&gt;
Then try very hard to need him less.&lt;/p&gt;
&lt;p&gt;And if you already have one, maybe send them a thank-you message.&lt;br&gt;
During the day, for once.&lt;/p&gt;
&lt;h3 id=&quot;faq&quot;&gt;FAQ&lt;/h3&gt;
&lt;h4 id=&quot;do-you-need-a-co-founder-to-start-a-startup-&quot;&gt;Do you need a co-founder to start a startup?&lt;/h4&gt;
&lt;p&gt;Not strictly. But Paul Graham lists &quot;single founder&quot; as one of the mistakes that kill startups, mainly because the low points are hard to carry alone. At the very least, have one person you can call.&lt;/p&gt;
&lt;h4 id=&quot;what-is-psychological-safety-in-a-team-&quot;&gt;What is psychological safety in a team?&lt;/h4&gt;
&lt;p&gt;Amy Edmondson defines it as a shared belief that the team is safe for interpersonal risk taking. In practice: you can admit a mistake or ask for help without being punished for it.&lt;/p&gt;
&lt;h4 id=&quot;how-do-you-make-late-night-emergencies-rarer-&quot;&gt;How do you make late-night emergencies rarer?&lt;/h4&gt;
&lt;p&gt;Write things down. Deployment steps, credentials, renewal dates and rollback commands should live somewhere the whole team can find them, not in one person's head.&lt;/p&gt;
&lt;h3 id=&quot;sources&quot;&gt;Sources&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://paulgraham.com/startupmistakes.html&quot;&gt;Paul Graham: The 18 Mistakes That Kill Startups&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://thecrimson.com/article/2012/4/9/hbs-start-noam-founder/&quot;&gt;The Harvard Crimson: Noam Wasserman on founders (2012)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.jstor.org/stable/2666999&quot;&gt;Amy Edmondson: Psychological Safety and Learning Behavior in Work Teams, Administrative Science Quarterly (1999)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;what-next&quot;&gt;What next&lt;/h3&gt;
&lt;p&gt;The outage night, in full: &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/the-night-i-broke-production&quot;&gt;we blamed our code, it was SSL&lt;/a&gt;.&lt;br&gt;
Another late-night call, from the other side: &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/i-said-i-would-help-a-friend&quot;&gt;I said I would help a friend&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Running an academy? &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.trackmyacademy.com&quot;&gt;Track My Academy&lt;/a&gt; handles attendance, fees, player reports and parent messages.&lt;br&gt;
It's built by &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.trackmytech.in&quot;&gt;TrackMy Tech&lt;/a&gt;.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/32525/the-3-a-m-call-why-every-founder-needs-an-arun</guid>
<pubDate>Fri, 30 Oct 2026 12:30:00 +0000</pubDate>
</item>
<item>
<title>Shipping Android and iOS solo (iOS: coming soon)</title>
<link>https://coderlegion.com/32524/shipping-android-and-ios-solo-ios-coming-soon</link>
<description>&lt;p&gt;I built the Track My Academy mobile apps myself.&lt;br&gt;
Both of them. Android and iOS.&lt;/p&gt;
&lt;p&gt;The Android app is live in production.&lt;br&gt;
The iOS app is coming soon.&lt;/p&gt;
&lt;p&gt;That second line is the honest one.&lt;br&gt;
It's also the one every solo founder ends up writing at some point.&lt;/p&gt;
&lt;p&gt;So this post isn't a victory lap.&lt;br&gt;
It's a look at what actually stands between one person and two app stores.&lt;br&gt;
Fees, rules, testers, reviewers.&lt;br&gt;
And why, for a product like ours, I think Android first is the sensible order.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.rahuldk.in/posts/shipping-android-and-ios-solo/cover.jpg&quot; alt=&quot;A smartphone showing the word android next to a small green Android robot figure&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Photo: &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/@redaquamedia&quot;&gt;Denny Müller&lt;/a&gt; on &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/photos/green-frog-iphone-case-beside-black-samsung-android-smartphone-HfWA-Axq6Ek&quot;&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&quot;building-it-is-the-part-you-expect&quot;&gt;Building it is the part you expect&lt;/h3&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.trackmyacademy.com&quot;&gt;Track My Academy&lt;/a&gt; started as a web app, and the web app is live.&lt;br&gt;
Real academies run on it.&lt;br&gt;
The first version came together with AI tools, mostly vibe coding, in about three months.&lt;br&gt;
That story, and the agency build that came before it, is in &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/the-app-that-arrived-from-2006&quot;&gt;the app that arrived from 2006&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The stack behind it is React, FastAPI, MongoDB, Supabase, Firebase and a few friends.&lt;/p&gt;
&lt;p&gt;Here's the thing nobody tells you when you're writing code at night.&lt;br&gt;
Writing the app is the part you can control.&lt;br&gt;
Getting it into a store is a different job, with somebody else's rules.&lt;/p&gt;
&lt;h3 id=&quot;the-two-doors-play-console-and-app-store-connect&quot;&gt;The two doors: Play Console and App Store Connect&lt;/h3&gt;
&lt;p&gt;Each platform has one front door.&lt;br&gt;
On Android it's the Play Console.&lt;br&gt;
On iOS it's App Store Connect, which needs a paid Apple Developer Program membership.&lt;/p&gt;
&lt;p&gt;The price of entry is the first difference.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th&gt;Google Play &lt;/th&gt;&lt;th&gt;Apple App Store&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Account cost &lt;/td&gt;&lt;td&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://support.google.com/googleplay/android-developer/answer/6112435&quot;&gt;US$25, one time&lt;/a&gt; &lt;/td&gt;&lt;td&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://developer.apple.com/programs/&quot;&gt;$99 a year&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Identity checks &lt;/td&gt;&lt;td&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://support.google.com/googleplay/android-developer/answer/6112435&quot;&gt;Government ID and a card in your legal name may be asked for&lt;/a&gt; &lt;/td&gt;&lt;td&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://developer.apple.com/programs/enroll/&quot;&gt;Legal name for individuals; a D-U-N-S Number for organisations&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Beta testing &lt;/td&gt;&lt;td&gt;Closed testing tracks &lt;/td&gt;&lt;td&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://developer.apple.com/programs/&quot;&gt;TestFlight, up to 10,000 external testers&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;For a bootstrapped team, one fee is a rounding error and the other is a yearly subscription.&lt;br&gt;
Neither is the real obstacle.&lt;br&gt;
But it does tell you something about how each store thinks.&lt;/p&gt;
&lt;p&gt;Apple's organisation route has its own homework.&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://developer.apple.com/programs/enroll/&quot;&gt;Apple's enrolment page&lt;/a&gt; says an organisation must be a legal entity that can sign contracts, needs a D-U-N-S Number, and needs a public, working website on its own domain.&lt;br&gt;
The organisation's name then shows as the seller name on the App Store.&lt;br&gt;
None of that is hard.&lt;br&gt;
All of it takes time you didn't plan for.&lt;/p&gt;
&lt;h3 id=&quot;google-s-12-testers-and-14-days&quot;&gt;Google's 12 testers and 14 days&lt;/h3&gt;
&lt;p&gt;Android is not a free pass either.&lt;/p&gt;
&lt;p&gt;If you open a personal Play developer account today, you can't just upload and publish.&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://support.google.com/googleplay/android-developer/answer/14151465&quot;&gt;Google's rules&lt;/a&gt; for personal accounts created after 13 November 2023 say at least 12 testers must be opted in to a closed test when you apply for production access.&lt;br&gt;
And they must have stayed opted in for the preceding 14 days, continuously.&lt;/p&gt;
&lt;p&gt;For a big company, 12 testers is a Slack message.&lt;br&gt;
For a solo developer, it's a favour you ask of friends, family and anyone who owes you one.&lt;br&gt;
Then you wait two weeks and hope nobody uninstalls.&lt;/p&gt;
&lt;p&gt;My opinion: it's annoying, and it's also fair.&lt;br&gt;
Two weeks with real people on real phones finds bugs you won't find alone.&lt;/p&gt;
&lt;h3 id=&quot;apple-s-reviewers-read-the-guidelines-so-you-have-to&quot;&gt;Apple's reviewers read the guidelines so you have to&lt;/h3&gt;
&lt;p&gt;On iOS the gate is a human review.&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://developer.apple.com/distribute/app-review/&quot;&gt;Apple says&lt;/a&gt; it typically reviews at least 50% of submissions in under 24 hours and 90% in under 48 hours.&lt;br&gt;
That's quick.&lt;br&gt;
Passing is the slower bit.&lt;/p&gt;
&lt;p&gt;The same page says that, on average, over 40% of unresolved issues relate to guideline 2.1, App Completeness.&lt;br&gt;
The &lt;a rel=&quot;nofollow&quot; href=&quot;https://developer.apple.com/app-store/review/guidelines/&quot;&gt;App Store Review Guidelines&lt;/a&gt; put it plainly: submissions &quot;should be final versions with all necessary metadata and fully functional URLs included&quot;.&lt;br&gt;
Placeholder text and temporary content have to go.&lt;/p&gt;
&lt;p&gt;There's also a line I like for its honesty.&lt;br&gt;
If your app has a login, include demo account details &quot;(and turn on your back-end service!)&quot;.&lt;br&gt;
Someone clearly learned that the hard way.&lt;/p&gt;
&lt;p&gt;A product like ours is almost entirely behind a login.&lt;br&gt;
It's role-based, so different people see different things.&lt;br&gt;
So a reviewer needs a working account and enough data to see the app do its job.&lt;/p&gt;
&lt;p&gt;Then there's guideline 4.2, Minimum Functionality.&lt;br&gt;
Your app &quot;should include features, content, and UI that elevate it beyond a repackaged website.&quot;&lt;br&gt;
If you already have a good web app, this is the trap.&lt;br&gt;
Wrapping it and shipping it is the fastest route, and the one most likely to bounce.&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://developer.apple.com/distribute/app-review/&quot;&gt;Apple's list of common problems&lt;/a&gt; also includes broken links, a missing privacy policy, inaccurate screenshots and unclear data-access prompts.&lt;br&gt;
Boring things.&lt;br&gt;
The boring things are always the ones that get you.&lt;/p&gt;
&lt;h3 id=&quot;why-android-first-for-us&quot;&gt;Why Android first, for us&lt;/h3&gt;
&lt;p&gt;Here's where I'll be opinionated.&lt;/p&gt;
&lt;p&gt;In India, Android isn't the bigger platform.&lt;br&gt;
It's nearly the only one.&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://gs.statcounter.com/os-market-share/mobile/india&quot;&gt;StatCounter's figures for September 2026&lt;/a&gt; put Android at 93.89% of mobile OS share in India and iOS at 6.05%.&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.trackmyacademy.com&quot;&gt;Track My Academy&lt;/a&gt; is for sports academies.&lt;br&gt;
Attendance, fees, player reports, messages to parents.&lt;br&gt;
The coach who started all this ran everything from his phone.&lt;br&gt;
His story is in &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/a-coach-complained-so-i-started-a-company&quot;&gt;how a coach's complaint turned into a company&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you're building for that person in India, the odds say their phone runs Android.&lt;br&gt;
So for an Indian sports-academy product, I think Android first is simply the order the market hands you.&lt;br&gt;
Add a one-time fee and a review flow you can test yourself, and the choice makes itself.&lt;/p&gt;
&lt;p&gt;That doesn't make iOS optional.&lt;br&gt;
Some parents and owners will be on iPhones.&lt;br&gt;
And the web app covers anyone in between while the iOS app is still on its way.&lt;/p&gt;
&lt;h3 id=&quot;what-i-d-tell-another-solo-dev&quot;&gt;What I'd tell another solo dev&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Budget for the store, not just the code.&lt;/strong&gt; Fees, verification, screenshots, privacy policy, demo accounts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Line up your testers early.&lt;/strong&gt; On Play, 14 days only starts once they're in.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Read guidelines 2.1 and 4.2 before you build, not after.&lt;/strong&gt; It's cheaper to design for them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ship where your users are first.&lt;/strong&gt; For us, that's Android.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Say &quot;coming soon&quot; out loud.&lt;/strong&gt; It's fine. It beats pretending.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The iOS app is coming soon.&lt;br&gt;
When it's out, you'll hear about it here.&lt;br&gt;
Probably with too many exclamation marks.&lt;/p&gt;
&lt;h3 id=&quot;faq-1&quot;&gt;FAQ&lt;/h3&gt;
&lt;h4 id=&quot;is-the-track-my-academy-ios-app-out-&quot;&gt;Is the Track My Academy iOS app out?&lt;/h4&gt;
&lt;p&gt;Not yet. The Android app and the web app are live. The iOS app is coming soon.&lt;/p&gt;
&lt;h4 id=&quot;do-new-google-play-developers-need-testers-before-going-live-&quot;&gt;Do new Google Play developers need testers before going live?&lt;/h4&gt;
&lt;p&gt;Personal accounts created after 13 November 2023 need at least 12 testers opted in to a closed test for 14 days in a row before applying for production access.&lt;/p&gt;
&lt;h4 id=&quot;how-much-does-it-cost-to-publish-on-both-stores-&quot;&gt;How much does it cost to publish on both stores?&lt;/h4&gt;
&lt;p&gt;Google Play charges a US$25 one-time fee. The Apple Developer Program costs $99 a year.&lt;/p&gt;
&lt;h3 id=&quot;sources-1&quot;&gt;Sources&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://developer.apple.com/programs/&quot;&gt;Apple Developer Program&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://developer.apple.com/programs/enroll/&quot;&gt;Apple: Enrolment requirements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://developer.apple.com/app-store/review/guidelines/&quot;&gt;Apple: App Store Review Guidelines&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://developer.apple.com/distribute/app-review/&quot;&gt;Apple: App Review&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://support.google.com/googleplay/android-developer/answer/14151465&quot;&gt;Google Play Console Help: Testing requirements for new personal developer accounts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://support.google.com/googleplay/android-developer/answer/6112435&quot;&gt;Google Play Console Help: Registering a developer account&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://gs.statcounter.com/os-market-share/mobile/india&quot;&gt;StatCounter: Mobile operating system market share, India&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;what-next-1&quot;&gt;What next&lt;/h3&gt;
&lt;p&gt;How the product got built in the first place: &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/the-app-that-arrived-from-2006&quot;&gt;the app that arrived from 2006&lt;/a&gt;.&lt;br&gt;
And what happens after you ship: &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/the-night-i-broke-production&quot;&gt;we blamed our code, it was SSL&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Running an academy? &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.trackmyacademy.com&quot;&gt;Track My Academy&lt;/a&gt; handles attendance, fees, player reports and parent messages.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/32524/shipping-android-and-ios-solo-ios-coming-soon</guid>
<pubDate>Fri, 30 Oct 2026 08:30:00 +0000</pubDate>
</item>
<item>
<title>Switching from biology to computer science, with zero plan</title>
<link>https://coderlegion.com/32538/switching-from-biology-to-computer-science-with-zero-plan</link>
<description>&lt;p&gt;In class 12, I was a bio-maths student.&lt;br&gt;
Biology and maths. The combination that says, &quot;I haven't decided yet.&quot;&lt;/p&gt;
&lt;p&gt;Then I ended up switching from biology to computer science.&lt;br&gt;
No plan, no grand vision, no robot built from spare parts at age nine.&lt;/p&gt;
&lt;p&gt;This post is the honest version of that switch.&lt;br&gt;
It's also for anyone choosing a stream after class 12.&lt;br&gt;
Or anyone eyeing a career change into tech from somewhere else entirely.&lt;/p&gt;
&lt;h3 id=&quot;choosing-a-stream-after-class-12-badly-in-my-case-&quot;&gt;Choosing a stream after class 12 (badly, in my case)&lt;/h3&gt;
&lt;p&gt;Bio-maths is the stream you pick to keep every door open.&lt;br&gt;
Doctor? Possible. Engineer? Also possible.&lt;br&gt;
Decision? Postponed, indefinitely.&lt;/p&gt;
&lt;p&gt;Let me be very honest here.&lt;br&gt;
I didn't pick biology out of passion.&lt;br&gt;
It was mostly peer pressure, plus a very silly reason at the time.&lt;/p&gt;
&lt;p&gt;My class 12 marks weren't great either.&lt;br&gt;
Nobody was framing that mark sheet.&lt;/p&gt;
&lt;p&gt;Until class 12, I had zero interest in computer science.&lt;br&gt;
None.&lt;br&gt;
Then I slowly realised I wasn't built for biology.&lt;br&gt;
So I quietly switched to computer science.&lt;/p&gt;
&lt;p&gt;No dramatic movie moment.&lt;br&gt;
Hollywood will not be calling.&lt;/p&gt;
&lt;p&gt;Today I'm doing a B.Tech in Artificial Intelligence and Data Science.&lt;br&gt;
Which sounds very impressive on paper.&lt;/p&gt;
&lt;p&gt;On paper, I also look like someone who sleeps eight hours.&lt;/p&gt;
&lt;p&gt;Would I do it again?&lt;br&gt;
Yes. Instantly.&lt;br&gt;
Best decision I have ever taken, I guess.&lt;/p&gt;
&lt;p&gt;The &quot;I guess&quot; is doing a lot of heavy lifting there.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://coderlegion.com/?qa=blob&amp;amp;qa_blobid=1795840028207653710&quot; alt=&quot;A white microscope on a plain white surface, the biology half of a bio-maths stream&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Photo: &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/@pawel_czerwinski&quot;&gt;Pawel Czerwinski&lt;/a&gt; on &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/photos/white-and-black-microscope-on-white-surface-VkITYPupzSg&quot;&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&quot;what-biology-and-maths-quietly-taught-me-about-code&quot;&gt;What biology and maths quietly taught me about code&lt;/h3&gt;
&lt;p&gt;People assume switching from biology to computer science wastes the first part.&lt;br&gt;
I don't think it does.&lt;/p&gt;
&lt;p&gt;Biology teaches you that systems are messy.&lt;br&gt;
Nothing works the way the diagram says it does.&lt;br&gt;
Everything depends on something else you forgot about.&lt;/p&gt;
&lt;p&gt;Which, it turns out, is also a perfect description of software.&lt;/p&gt;
&lt;p&gt;Maths taught me that being wrong is normal.&lt;br&gt;
You just keep going until the answer stops being wrong.&lt;/p&gt;
&lt;p&gt;Debugging is the same thing, but with more caffeine.&lt;/p&gt;
&lt;p&gt;There's even a whole field where the two subjects meet.&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://en.wikipedia.org/wiki/Computational_biology&quot;&gt;Computational biology&lt;/a&gt; studies living systems using computer science, data analysis and simulation.&lt;br&gt;
Its cousin, &lt;a rel=&quot;nofollow&quot; href=&quot;https://en.wikipedia.org/wiki/Bioinformatics&quot;&gt;bioinformatics&lt;/a&gt;, builds software tools for huge biological datasets.&lt;/p&gt;
&lt;p&gt;So no, the biology years were not a detour.&lt;br&gt;
They were a weird, scenic shortcut.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://coderlegion.com/?qa=blob&amp;amp;qa_blobid=12833413910814648635&quot; alt=&quot;Mathematical equations printed on a page, the maths half of bio-maths&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Photo: &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/@bkaraivanov&quot;&gt;Bozhin Karaivanov&lt;/a&gt; on &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/photos/mathematical-equations-are-written-on-a-page-f8kW9cbVzwM&quot;&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&quot;can-a-bio-maths-student-do-b-tech-in-computer-science-&quot;&gt;Can a bio-maths student do B.Tech in computer science?&lt;/h3&gt;
&lt;p&gt;Short answer: usually, yes.&lt;br&gt;
Long answer: check the fine print, because India loves fine print.&lt;/p&gt;
&lt;p&gt;Bio-maths students normally study physics and chemistry too.&lt;br&gt;
With maths, that's the classic engineering set, so most doors stay open.&lt;/p&gt;
&lt;p&gt;In 2021, AICTE also &lt;a rel=&quot;nofollow&quot; href=&quot;https://news.careers360.com/how-aictes-new-rules-make-btech-course-more-accessible/amp&quot;&gt;relaxed its B.Tech eligibility rules&lt;/a&gt;.&lt;br&gt;
Its handbook listed biology among 14 subjects that could count.&lt;br&gt;
But the change was optional.&lt;br&gt;
States, universities and JEE Main could still insist on physics and maths.&lt;/p&gt;
&lt;p&gt;So here's my advice, and it's boring on purpose.&lt;br&gt;
Read the admission brochure of the exact college you want.&lt;br&gt;
Then read it again, slowly, like it owes you money.&lt;/p&gt;
&lt;h3 id=&quot;what-b-tech-ai-and-data-science-actually-is&quot;&gt;What B.Tech AI and Data Science actually is&lt;/h3&gt;
&lt;p&gt;My degree is a B.Tech in AI and Data Science.&lt;br&gt;
It's computer science with extra statistics, extra maths and extra hype.&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://en.wikipedia.org/wiki/Data_science&quot;&gt;Data science&lt;/a&gt; mixes statistics, scientific computing, algorithms and coding.&lt;br&gt;
The goal is to pull useful knowledge out of messy data.&lt;br&gt;
It also leans on domain knowledge from whatever field the data comes from.&lt;/p&gt;
&lt;p&gt;That last bit matters if you're coming from a non-CS background.&lt;br&gt;
Your biology, commerce or arts brain is not a handicap.&lt;br&gt;
It's the domain knowledge.&lt;/p&gt;
&lt;p&gt;Data without context is just a very large spreadsheet.&lt;/p&gt;
&lt;p&gt;Should everyone pick AI and Data Science? No.&lt;br&gt;
If you like building things, any CS-flavoured branch will do.&lt;br&gt;
The branch name matters far less than what you build during it.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://coderlegion.com/?qa=blob&amp;amp;qa_blobid=15098699796326006083&quot; alt=&quot;Students smiling in a college lecture hall during a class&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Photo: &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/@silverkblack&quot;&gt;Vitaly Gariev&lt;/a&gt; on &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/photos/students-smiling-in-a-lecture-hall-classroom-NGLWZV4xOPg&quot;&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&quot;learning-to-code-from-a-non-cs-background&quot;&gt;Learning to code from a non-CS background&lt;/h3&gt;
&lt;p&gt;Here's the part nobody tells you.&lt;/p&gt;
&lt;p&gt;My first month of college was rough.&lt;br&gt;
I was the non-CS kid in a room full of CS kids.&lt;br&gt;
I felt properly inferior.&lt;/p&gt;
&lt;p&gt;So I did something slightly unhinged.&lt;br&gt;
I learned at extremely high intensity, every single day.&lt;br&gt;
By the end of that month, I'd learned more than 12 programming languages.&lt;br&gt;
More than the rest of the class had covered by then.&lt;/p&gt;
&lt;p&gt;And the learning never really stopped.&lt;br&gt;
Once I started building software as a business, I had to learn everything it needed.&lt;/p&gt;
&lt;p&gt;Nobody taught me to code.&lt;br&gt;
I taught myself.&lt;br&gt;
My biggest teacher was &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.freecodecamp.org/&quot;&gt;freeCodeCamp&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It's a &lt;a rel=&quot;nofollow&quot; href=&quot;https://en.wikipedia.org/wiki/FreeCodeCamp&quot;&gt;non-profit&lt;/a&gt; with free, interactive coding courses and projects.&lt;br&gt;
I'm genuinely grateful for it.&lt;br&gt;
Without freeCodeCamp, I honestly might not be where I am.&lt;br&gt;
It kept me motivated, and it pushed my limits.&lt;/p&gt;
&lt;p&gt;I learn by touching the thing until it makes sense.&lt;br&gt;
I do it badly first.&lt;br&gt;
Then slightly less badly.&lt;br&gt;
Then, eventually, well enough to ship.&lt;/p&gt;
&lt;p&gt;That approach is basically my whole career.&lt;/p&gt;
&lt;p&gt;We once hired someone to build &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.trackmyacademy.com&quot;&gt;Track My Academy&lt;/a&gt;.&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/the-app-that-arrived-from-2006&quot;&gt;What came back&lt;/a&gt; was PHP, and it looked like 2006.&lt;br&gt;
So I decided to build it myself.&lt;/p&gt;
&lt;p&gt;The first night was a MacBook Air, a second-hand iPhone, ChatGPT and VS Code.&lt;br&gt;
Mostly research, then a landing page I actually liked.&lt;/p&gt;
&lt;p&gt;Later, I built the Android and iOS apps myself.&lt;br&gt;
Android is live in production. iOS is coming soon.&lt;br&gt;
No certificate. Just apps, and a lot of Monster cans.&lt;/p&gt;
&lt;p&gt;If you're starting from zero, here's what I'd actually do:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Take one free foundation course.&lt;/strong&gt; freeCodeCamp is what I used. &lt;a rel=&quot;nofollow&quot; href=&quot;https://cs50.harvard.edu/x/&quot;&gt;CS50&lt;/a&gt; is excellent too.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pick one language and stay there.&lt;/strong&gt; Python is a friendly first choice.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Skip the official Python tutorial at first.&lt;/strong&gt; It &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.python.org/3/tutorial/index.html&quot;&gt;says itself&lt;/a&gt; it's not for total beginners.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Build something you'd actually use.&lt;/strong&gt; A tracker, a bot, a page for your football team.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Break it, fix it, repeat.&lt;/strong&gt; That's the whole syllabus.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The CS50 page says two thirds of its students have never taken CS before.&lt;br&gt;
So you'd be in very large, very confused company.&lt;/p&gt;
&lt;p&gt;And yes, use AI tools.&lt;br&gt;
Early on, we &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/dozens-of-email-accounts-and-zero-shame&quot;&gt;hunted down every free AI trial&lt;/a&gt; we could find.&lt;br&gt;
Less elegant than it sounds. It worked.&lt;/p&gt;
&lt;p&gt;Just understand the code before you ship it.&lt;br&gt;
Production will teach you otherwise.&lt;br&gt;
Ask me about &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/the-night-i-broke-production&quot;&gt;the night I broke it&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://coderlegion.com/?qa=blob&amp;amp;qa_blobid=10272480011758500868&quot; alt=&quot;Colourful code on a laptop screen at night, learning to code from a non-CS background&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Photo: &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/@vishnukalanad&quot;&gt;Vishnu Kalanad&lt;/a&gt; on &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/photos/computer-screen-displaying-colorful-code-evzHeMgbKOg&quot;&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&quot;biology-found-me-again-anyway&quot;&gt;Biology found me again anyway&lt;/h3&gt;
&lt;p&gt;Here's the plot twist.&lt;/p&gt;
&lt;p&gt;I left biology for computer science.&lt;br&gt;
Then biology walked back in through the side door.&lt;/p&gt;
&lt;p&gt;I'm now AI and Product Development Lead at &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.biopipeline.online&quot;&gt;BioPipeline&lt;/a&gt;.&lt;br&gt;
It's a SaaS for plant molecular docking.&lt;br&gt;
We built it from scratch with the founding team.&lt;br&gt;
Compound uploads, docking runs, molecular interaction outputs, results.&lt;/p&gt;
&lt;p&gt;It started because &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/i-said-i-would-help-a-friend&quot;&gt;I said I would help a friend&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So the bio-maths kid ended up writing software for biologists.&lt;br&gt;
The universe has a sense of humour.&lt;br&gt;
Mostly at my expense.&lt;/p&gt;
&lt;h3 id=&quot;nothing-went-the-way-i-expected&quot;&gt;Nothing went the way I expected&lt;/h3&gt;
&lt;p&gt;From the moment I switched, nothing followed a script.&lt;/p&gt;
&lt;p&gt;I coached football part-time at an academy.&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/a-coach-complained-so-i-started-a-company&quot;&gt;A coach's complaint&lt;/a&gt; about attendance and payments became an idea.&lt;br&gt;
That idea became Track My Academy.&lt;br&gt;
Then it became a company, &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.trackmytech.in&quot;&gt;TrackMy Tech&lt;/a&gt;.&lt;br&gt;
I'm now its Executive Director, while still technically a student.&lt;/p&gt;
&lt;p&gt;My mother still asks whether I went to class.&lt;br&gt;
Fair question. &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/exams-the-office-and-a-1am-gate&quot;&gt;Student founder life&lt;/a&gt; is like that.&lt;/p&gt;
&lt;p&gt;None of this was in any plan.&lt;br&gt;
I'd love to tell you I saw it coming.&lt;br&gt;
I absolutely did not.&lt;/p&gt;
&lt;h3 id=&quot;if-you-re-choosing-a-stream-after-class-12-right-now&quot;&gt;If you're choosing a stream after class 12 right now&lt;/h3&gt;
&lt;p&gt;You might be stuck between two streams.&lt;br&gt;
Everyone has an opinion about what you should do.&lt;/p&gt;
&lt;p&gt;Here's mine, and it's free.&lt;/p&gt;
&lt;p&gt;The subject you pick at seventeen isn't a life sentence.&lt;br&gt;
It's a starting point.&lt;/p&gt;
&lt;p&gt;Pick something. Work hard at it.&lt;br&gt;
If it doesn't fit, switch.&lt;/p&gt;
&lt;p&gt;Coming from biology into CS? One suggestion.&lt;br&gt;
Don't panic about being behind.&lt;br&gt;
CS students mostly cover basics in classes 11 and 12.&lt;br&gt;
Some Python, some general IT.&lt;br&gt;
You can catch up on that whole syllabus in a month or two.&lt;br&gt;
The CS kids aren't wizards. They just started earlier.&lt;/p&gt;
&lt;p&gt;One more thing.&lt;br&gt;
Be careful with &quot;opportunities&quot; that cost money.&lt;br&gt;
I once &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/i-paid-for-an-internship&quot;&gt;paid for an internship&lt;/a&gt;.&lt;br&gt;
Still annoyed about it.&lt;/p&gt;
&lt;p&gt;Nobody checks your class 12 stream when your product works.&lt;/p&gt;
&lt;h3 id=&quot;faq-2&quot;&gt;FAQ&lt;/h3&gt;
&lt;h4 id=&quot;is-switching-from-biology-to-computer-science-hard-&quot;&gt;Is switching from biology to computer science hard?&lt;/h4&gt;
&lt;p&gt;Harder at the start, honestly.&lt;br&gt;
The first few months feel like learning a new language. Because they are.&lt;br&gt;
After that, it's mostly practice and stubbornness.&lt;br&gt;
Biology students already memorise ridiculous names. Variable names are easier.&lt;/p&gt;
&lt;h4 id=&quot;can-i-do-b-tech-ai-and-data-science-after-bio-maths-&quot;&gt;Can I do B.Tech AI and Data Science after bio-maths?&lt;/h4&gt;
&lt;p&gt;Usually, yes, since bio-maths includes physics and maths.&lt;br&gt;
AICTE allows more combinations now, but colleges and states decide.&lt;br&gt;
Check the brochure of your exact college.&lt;/p&gt;
&lt;h4 id=&quot;do-i-need-a-cs-background-to-learn-coding-&quot;&gt;Do I need a CS background to learn coding?&lt;/h4&gt;
&lt;p&gt;No.&lt;br&gt;
CS50 says most of its students start without one.&lt;br&gt;
You need curiosity, a laptop and a high tolerance for being wrong.&lt;/p&gt;
&lt;h3 id=&quot;making-the-switch-yourself-&quot;&gt;Making the switch yourself?&lt;/h3&gt;
&lt;p&gt;If you want an honest second opinion, &lt;a rel=&quot;nofollow&quot; href=&quot;https://calendar.rahuldk.in&quot;&gt;book a call with me&lt;/a&gt;.&lt;br&gt;
Or see what I'm building at &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in&quot;&gt;rahuldk.in&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;And if you end up in computer science by accident?&lt;/p&gt;
&lt;p&gt;Welcome. We have snacks.&lt;br&gt;
Actually, we have Monster cans. Close enough.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/32538/switching-from-biology-to-computer-science-with-zero-plan</guid>
<pubDate>Fri, 30 Oct 2026 04:30:00 +0000</pubDate>
</item>
<item>
<title>I built a pager for my own developers</title>
<link>https://coderlegion.com/32522/i-built-a-pager-for-my-own-developers</link>
<description>&lt;p&gt;An earlier post ended with a promise.&lt;br&gt;
Sort of.&lt;/p&gt;
&lt;p&gt;In &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/the-night-i-broke-production&quot;&gt;the night I broke production&lt;/a&gt;, an expired SSL certificate on our backend domain failed silently.&lt;br&gt;
It took us about four hours to find it.&lt;br&gt;
I stayed in the office all night.&lt;/p&gt;
&lt;p&gt;At the end I mentioned, almost in passing, that I later built a &quot;Pager System&quot; for Track My Academy developers.&lt;br&gt;
An internal, real-time error and notification system.&lt;br&gt;
The idea: problems should find developers, not wait to be found.&lt;/p&gt;
&lt;p&gt;This post is about that idea.&lt;br&gt;
Why a tiny team needs a pager at all.&lt;br&gt;
And what I think a good one should and shouldn't do.&lt;/p&gt;
&lt;h3 id=&quot;a-very-old-idea&quot;&gt;A very old idea&lt;/h3&gt;
&lt;p&gt;Pagers were not invented for developers.&lt;br&gt;
They were invented for doctors.&lt;/p&gt;
&lt;p&gt;According to &lt;a rel=&quot;nofollow&quot; href=&quot;https://en.wikipedia.org/wiki/Pager&quot;&gt;Wikipedia's history of the pager&lt;/a&gt;, Al Gross patented the first telephone pager system in 1949, intended for physicians.&lt;br&gt;
The physicians, apparently, did not love the idea of being permanently on call.&lt;br&gt;
I relate.&lt;/p&gt;
&lt;p&gt;A year later, a paging service for doctors launched around New York City.&lt;br&gt;
Doctors paid US$12 a month for a pager that worked within about 40 km of one transmitter.&lt;/p&gt;
&lt;p&gt;And pagers never quite died.&lt;br&gt;
Wikipedia notes that in 2017 the UK's NHS was thought to use over 10% of the world's remaining pagers.&lt;br&gt;
Volunteer firefighters and rural first responders still carry them.&lt;/p&gt;
&lt;p&gt;The point of a pager has never changed.&lt;br&gt;
Something important is happening.&lt;br&gt;
The right person needs to know.&lt;br&gt;
Now, not when they next check.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.rahuldk.in/posts/pager-system-for-my-own-developers/pager-circuit-board.jpg&quot; alt=&quot;A small circuit board with a Motorola chip in the middle, held between two fingers&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Photo: &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/@winstonchen&quot;&gt;Winston Chen&lt;/a&gt; on &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/photos/a-close-up-of-a-person-holding-a-small-electronic-device-8Hrs6AIM6R4&quot;&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&quot;why-a-small-team-needs-one&quot;&gt;Why a small team needs one&lt;/h3&gt;
&lt;p&gt;Big companies have on-call rotations, incident commanders and very serious dashboards.&lt;br&gt;
Small teams have a group chat and hope.&lt;/p&gt;
&lt;p&gt;Hope is not a monitoring strategy.&lt;br&gt;
I found that out the hard way, overnight.&lt;/p&gt;
&lt;p&gt;Track My Academy runs on React, FastAPI, MongoDB, Supabase, AWS EC2, Vercel, Razorpay, Firebase and Redis.&lt;br&gt;
That's a lot of moving parts for a small team.&lt;br&gt;
Any one of them can have a bad day.&lt;br&gt;
And real academies run on it, so their bad day becomes our bad day.&lt;/p&gt;
&lt;p&gt;The awkward truth is that a small team can't afford to watch everything.&lt;br&gt;
Nobody is sitting in front of a dashboard all day.&lt;br&gt;
We're shipping features, fixing bugs and, in my case, occasionally attending class.&lt;/p&gt;
&lt;p&gt;So the system has to do the watching.&lt;br&gt;
And when something breaks, it has to come and find a human.&lt;/p&gt;
&lt;h3 id=&quot;the-rules-i-d-steal-from-google&quot;&gt;The rules I'd steal from Google&lt;/h3&gt;
&lt;p&gt;Google's SRE book has a chapter on &lt;a rel=&quot;nofollow&quot; href=&quot;https://sre.google/sre-book/monitoring-distributed-systems/&quot;&gt;monitoring distributed systems&lt;/a&gt;.&lt;br&gt;
I keep going back to it.&lt;/p&gt;
&lt;p&gt;Three lines from it should be on every developer's wall:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&quot;Every page should be actionable.&quot;&lt;/li&gt;
&lt;li&gt;&quot;Every page response should require intelligence.&quot;&lt;/li&gt;
&lt;li&gt;&quot;Pages should be about a novel problem or an event that hasn't been seen before.&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If a human gets woken up and the fix is a script, automate the script.&lt;br&gt;
If the alert is something they'll ignore, delete the alert.&lt;/p&gt;
&lt;p&gt;The same chapter splits monitoring into two questions: &quot;what's broken, and why?&quot;&lt;br&gt;
What's broken is the symptom.&lt;br&gt;
Why is the cause.&lt;/p&gt;
&lt;p&gt;That distinction would have saved us hours.&lt;br&gt;
We had a symptom: everything was down.&lt;br&gt;
We jumped straight to a cause we'd picked ourselves: our new code.&lt;br&gt;
The real cause was a certificate nobody was watching.&lt;/p&gt;
&lt;p&gt;It also lists four golden signals: latency, traffic, errors and saturation.&lt;br&gt;
If you can only measure four things, the book says, measure those.&lt;/p&gt;
&lt;h3 id=&quot;the-danger-a-pager-that-cries-wolf&quot;&gt;The danger: a pager that cries wolf&lt;/h3&gt;
&lt;p&gt;There's a catch with alerting.&lt;br&gt;
Too much of it is almost as bad as none.&lt;/p&gt;
&lt;p&gt;The SRE book says that &quot;when pages occur too frequently, employees second-guess, skim, or even ignore incoming alerts&quot;.&lt;br&gt;
And one line I really like: &quot;I can only react with a sense of urgency a few times a day before I become fatigued.&quot;&lt;/p&gt;
&lt;p&gt;Hospitals know this problem well.&lt;br&gt;
The US agency AHRQ has a primer on &lt;a rel=&quot;nofollow&quot; href=&quot;https://psnet.ahrq.gov/primer/alert-fatigue&quot;&gt;alert fatigue&lt;/a&gt;.&lt;br&gt;
It describes one study where ICU monitors generated &quot;more than 2 million alerts in one month&quot;, or &quot;187 warnings per patient per day&quot;.&lt;br&gt;
It also says clinicians &quot;override the vast majority&quot; of computerised ordering warnings.&lt;/p&gt;
&lt;p&gt;Doctors are not careless.&lt;br&gt;
They're human, and humans tune out noise.&lt;br&gt;
Developers are the same, only with worse posture.&lt;/p&gt;
&lt;h3 id=&quot;what-i-think-a-good-internal-pager-should-do&quot;&gt;What I think a good internal pager should do&lt;/h3&gt;
&lt;p&gt;This is opinion, not a spec.&lt;br&gt;
But if you're a small team building your own, here's what I'd aim for.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Page on symptoms users feel.&lt;/strong&gt; Errors, slow responses, failed payments. Not every log line.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Say what's broken in one sentence.&lt;/strong&gt; The person reading it may have just woken up.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Go to the right person.&lt;/strong&gt; Not the whole team. One owner per alert.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stay quiet when things are fine.&lt;/strong&gt; Every alert that isn't urgent teaches people to ignore the urgent ones.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Watch the boring stuff.&lt;/strong&gt; Certificates, domains, disk space, expiring keys.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Get pruned regularly.&lt;/strong&gt; If an alert fired and nobody acted, change it or remove it.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You don't have to build it from scratch either.&lt;br&gt;
Tools like &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.sentry.io/product/alerts/&quot;&gt;Sentry&lt;/a&gt; let you send notifications or create tickets when issues match rules you set.&lt;br&gt;
Its docs say the goal is alerts that are &quot;valuable and not too noisy&quot;.&lt;br&gt;
They suggest using filters so you only hear about issues your team needs to know about.&lt;/p&gt;
&lt;h3 id=&quot;about-those-certificates&quot;&gt;About those certificates&lt;/h3&gt;
&lt;p&gt;The boring stuff deserves its own section, because it got us.&lt;/p&gt;
&lt;p&gt;Certificates are about to expire a lot more often.&lt;br&gt;
In 2025 the CA/Browser Forum &lt;a rel=&quot;nofollow&quot; href=&quot;https://cabforum.org/2025/04/11/ballot-sc081v3-introduce-schedule-of-reducing-validity-and-data-reuse-periods/&quot;&gt;passed a ballot&lt;/a&gt; to cut the maximum TLS certificate lifetime from 398 days to 47 days.&lt;br&gt;
The reductions start in March 2026 and finish in March 2029.&lt;/p&gt;
&lt;p&gt;Meanwhile, Let's Encrypt &lt;a rel=&quot;nofollow&quot; href=&quot;https://letsencrypt.org/2025/01/22/ending-expiration-emails/&quot;&gt;stopped sending expiry reminder emails&lt;/a&gt; on 4 June 2025.&lt;br&gt;
Its reasons included that more people now have reliable renewal automation.&lt;br&gt;
It pointed people to third-party monitoring instead.&lt;/p&gt;
&lt;p&gt;So: shorter lifetimes, fewer reminders.&lt;br&gt;
If your renewal automation ever quietly fails, nobody is going to email you about it.&lt;br&gt;
Your users will tell you instead.&lt;/p&gt;
&lt;p&gt;Automate renewals.&lt;br&gt;
Then monitor the automation anyway.&lt;/p&gt;
&lt;h3 id=&quot;the-point&quot;&gt;The point&lt;/h3&gt;
&lt;p&gt;A pager isn't about being available all the time.&lt;br&gt;
Honestly, I'd like to sleep more, not less.&lt;/p&gt;
&lt;p&gt;It's about not spending four hours blaming the wrong thing.&lt;br&gt;
The problem should arrive with a name attached.&lt;br&gt;
Then the human can do the part that needs a human.&lt;/p&gt;
&lt;h3 id=&quot;faq-3&quot;&gt;FAQ&lt;/h3&gt;
&lt;h4 id=&quot;does-a-small-team-really-need-alerting-&quot;&gt;Does a small team really need alerting?&lt;/h4&gt;
&lt;p&gt;I think so. Small teams have fewer people watching, so the system has to do the watching for them.&lt;/p&gt;
&lt;h4 id=&quot;what-should-trigger-a-page-&quot;&gt;What should trigger a page?&lt;/h4&gt;
&lt;p&gt;Something urgent, actionable and user-facing. If nobody needs to act right now, it's a ticket or a report, not a page.&lt;/p&gt;
&lt;h4 id=&quot;how-do-i-avoid-alert-fatigue-&quot;&gt;How do I avoid alert fatigue?&lt;/h4&gt;
&lt;p&gt;Fewer, better alerts. Review the ones that fired, and delete or fix any that nobody acted on.&lt;/p&gt;
&lt;h3 id=&quot;sources-2&quot;&gt;Sources&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://en.wikipedia.org/wiki/Pager&quot;&gt;Wikipedia: Pager&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://sre.google/sre-book/monitoring-distributed-systems/&quot;&gt;Google SRE book: Monitoring distributed systems&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://psnet.ahrq.gov/primer/alert-fatigue&quot;&gt;AHRQ PSNet: Alert fatigue&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.sentry.io/product/alerts/&quot;&gt;Sentry docs: Alerts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://cabforum.org/2025/04/11/ballot-sc081v3-introduce-schedule-of-reducing-validity-and-data-reuse-periods/&quot;&gt;CA/Browser Forum: Ballot SC-081v3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://letsencrypt.org/2025/01/22/ending-expiration-emails/&quot;&gt;Let's Encrypt: Ending support for expiration notification emails&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;what-next-2&quot;&gt;What next&lt;/h3&gt;
&lt;p&gt;The full outage story is in &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/the-night-i-broke-production&quot;&gt;the night I broke production&lt;/a&gt;.&lt;br&gt;
For where the late nights happen, see &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/three-monitors-one-monster-can&quot;&gt;three monitors, one Monster can&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Running an academy? &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.trackmyacademy.com&quot;&gt;Track My Academy&lt;/a&gt; handles attendance, fees, player reports and parent messages.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/32522/i-built-a-pager-for-my-own-developers</guid>
<pubDate>Thu, 29 Oct 2026 08:30:00 +0000</pubDate>
</item>
<item>
<title>From hackathon loser to hackathon jury: the loop is complete</title>
<link>https://coderlegion.com/32521/from-hackathon-loser-to-hackathon-jury-the-loop-is-complete</link>
<description>&lt;p&gt;&lt;em&gt;Cover photo: &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/@start_global96&quot;&gt;Mirea Mazzei&lt;/a&gt; on &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/photos/a-large-room-filled-with-lots-of-tables-and-chairs-d1Lp7juy6JU&quot;&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;On 8 and 9 October, I was on a hackathon jury.&lt;/p&gt;
&lt;p&gt;Me.&lt;br&gt;
The guy who used to be on the other side, sweating.&lt;/p&gt;
&lt;p&gt;The hackathon was at VISTAS.&lt;br&gt;
It was run by the Department of Computing Sciences and the Vels Innovation Council.&lt;br&gt;
More than 80 teams took part.&lt;br&gt;
Over the two days, I evaluated somewhere between 20 and 30 of them.&lt;/p&gt;
&lt;p&gt;Somewhere in the middle of all that, I realised something.&lt;br&gt;
I've now sat in every seat a hackathon has.&lt;/p&gt;
&lt;h3 id=&quot;every-seat-at-the-hackathon-table&quot;&gt;Every seat at the hackathon table&lt;/h3&gt;
&lt;p&gt;Let me count them.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Participant.&lt;/strong&gt;&lt;br&gt;
A &lt;a rel=&quot;nofollow&quot; href=&quot;https://en.wikipedia.org/wiki/Hackathon&quot;&gt;hackathon&lt;/a&gt; is meant to be rapid, collaborative building over a short stretch.&lt;br&gt;
Rapid, yes.&lt;br&gt;
Collaborative, mostly.&lt;br&gt;
Calm, never.&lt;br&gt;
I've been the nervous one pitching at the end of it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Loser.&lt;/strong&gt;&lt;br&gt;
I've lost hackathons.&lt;br&gt;
It stings.&lt;br&gt;
Then, annoyingly, it teaches you something.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Winner.&lt;/strong&gt;&lt;br&gt;
I've also won a couple.&lt;br&gt;
Master of Purple Fabric AI at the Intellect Design Arena hackathon.&lt;br&gt;
First place at HackAtom, the Russian Embassy hackathon.&lt;br&gt;
Both in 2026, both still slightly surprising.&lt;br&gt;
They live on my &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/about&quot;&gt;about page&lt;/a&gt;, where I can look at them.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Organiser.&lt;/strong&gt;&lt;br&gt;
I organised Smart India Hackathon at my college.&lt;br&gt;
It's the biggest hackathon we run.&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.newsonair.gov.in/smart-india-hackathon-2024-kicks-off-at-iit-jammu&quot;&gt;Smart India Hackathon&lt;/a&gt; is a national event built around real-world problems.&lt;br&gt;
Organising one teaches you how much invisible work goes into two days of &quot;fun&quot;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jury.&lt;/strong&gt;&lt;br&gt;
And now, this.&lt;br&gt;
So yes, I guess the loop is complete.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.rahuldk.in/posts/from-hackathon-loser-to-hackathon-jury/late-night-hackathon-laptops.jpg&quot; alt=&quot;A participant in an orange hoodie leans over a row of glowing laptops in a dim room during a long coding session&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Photo: &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/@frani&quot;&gt;fran innocenti&lt;/a&gt; on &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/photos/man-sits-in-front-of-laptop-nOwkd4YvdUg&quot;&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&quot;what-being-a-hackathon-jury-is-actually-like&quot;&gt;What being a hackathon jury is actually like&lt;/h3&gt;
&lt;p&gt;I expected judging to be relaxing.&lt;br&gt;
You sit.&lt;br&gt;
They present.&lt;br&gt;
You nod wisely.&lt;/p&gt;
&lt;p&gt;It is not relaxing.&lt;br&gt;
It's exhausting.&lt;/p&gt;
&lt;p&gt;You have to stay unbiased.&lt;br&gt;
Team twenty deserves the same judge as team one.&lt;/p&gt;
&lt;p&gt;You have to stay focused through every single pitch.&lt;br&gt;
Even the fifth version of the same idea.&lt;/p&gt;
&lt;p&gt;And you can't show any stress.&lt;br&gt;
Not a sigh, not a yawn, not a glance at your phone.&lt;br&gt;
The students are nervous enough already.&lt;br&gt;
They read every flicker on your face.&lt;br&gt;
I know, because I used to do the reading.&lt;/p&gt;
&lt;p&gt;So you hold a polite, interested face for two whole days.&lt;br&gt;
It's basically acting.&lt;br&gt;
Nobody warned me there'd be acting.&lt;/p&gt;
&lt;h3 id=&quot;watching-my-own-mistakes-live&quot;&gt;Watching my own mistakes, live&lt;/h3&gt;
&lt;p&gt;Here's the uncomfortable part.&lt;/p&gt;
&lt;p&gt;The mistakes I saw were my mistakes.&lt;br&gt;
The exact ones I made as a participant.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Over-engineering.&lt;/strong&gt;&lt;br&gt;
Teams built huge systems for a two-day problem.&lt;br&gt;
I did that too.&lt;br&gt;
The demo always pays the price.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Drifting from the problem statement.&lt;/strong&gt;&lt;br&gt;
Some teams started on the given problem.&lt;br&gt;
Then they wandered somewhere more exciting.&lt;br&gt;
The judge is still holding the original problem statement.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Trying to impress instead of showing.&lt;/strong&gt;&lt;br&gt;
Lots of big words.&lt;br&gt;
Not enough working product.&lt;br&gt;
I recognised that one instantly.&lt;br&gt;
I used to be fluent in it.&lt;/p&gt;
&lt;p&gt;I turned all of this into a practical guide.&lt;br&gt;
It's called &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/how-to-win-a-hackathon-judges&quot;&gt;how to win a hackathon, according to a tired judge&lt;/a&gt;.&lt;br&gt;
Send it to anyone with a hackathon this month.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.rahuldk.in/posts/from-hackathon-loser-to-hackathon-jury/jury-panel-at-table.jpg&quot; alt=&quot;A four-member panel sits behind a long table with microphones and screens, listening closely&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Photo: &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.pexels.com/@werner-pfennig&quot;&gt;Werner Pfennig&lt;/a&gt; on &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.pexels.com/photo/people-sitting-in-a-conference-room-6949980/&quot;&gt;Pexels&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&quot;why-judges-lose-focus-after-the-fifth-team&quot;&gt;Why judges lose focus after the fifth team&lt;/h3&gt;
&lt;p&gt;Most teams in my group had the same or similar problem statements.&lt;br&gt;
That happens when teams are grouped by theme.&lt;/p&gt;
&lt;p&gt;It means the fifth explanation of a problem lands differently than the first.&lt;br&gt;
After that, attention slips.&lt;br&gt;
I felt it, even while trying hard not to.&lt;/p&gt;
&lt;p&gt;Psychologists have names for things like this.&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://en.wikipedia.org/wiki/Decision_fatigue&quot;&gt;Decision fatigue&lt;/a&gt; describes decisions getting worse after a long run of them.&lt;br&gt;
To be fair, the evidence for it is mixed.&lt;/p&gt;
&lt;p&gt;Order effects are better documented.&lt;br&gt;
A &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.sciencedaily.com/releases/2005/03/050308102138.htm&quot;&gt;Carnegie Mellon study&lt;/a&gt; found later performers got higher marks in Eurovision and figure skating.&lt;br&gt;
A &lt;a rel=&quot;nofollow&quot; href=&quot;https://dlab.sauder.ubc.ca/sjdm/journal/16/16121/jdm16121.html&quot;&gt;2017 study of song contests&lt;/a&gt; found something similar.&lt;br&gt;
Expert judges were swayed by a randomly assigned running number.&lt;/p&gt;
&lt;p&gt;Hackathons aren't song contests.&lt;br&gt;
Although some pitches did have a chorus.&lt;br&gt;
The lesson still carries over: judges are human, and humans drift.&lt;/p&gt;
&lt;h3 id=&quot;a-note-for-hackathon-organisers-mix-up-the-topics&quot;&gt;A note for hackathon organisers: mix up the topics&lt;/h3&gt;
&lt;p&gt;This is the one thing I'd change as an organiser.&lt;/p&gt;
&lt;p&gt;Don't give one jury a stack of teams with the same topic.&lt;br&gt;
Give each jury a mix of problem statements.&lt;/p&gt;
&lt;p&gt;The same topic ten times in a row flattens everything.&lt;br&gt;
The judge loses interest.&lt;br&gt;
Small differences start looking huge, or invisible.&lt;br&gt;
The evaluation stops being as fair as it should be.&lt;/p&gt;
&lt;p&gt;A few other things I'd suggest:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mix themes in every jury group.&lt;/strong&gt; Variety keeps judges sharp.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shuffle the running order.&lt;/strong&gt; Don't let the same kind of team always land last.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Give judges a short rubric.&lt;/strong&gt; Four or five criteria, scored as they go.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Build in breaks.&lt;/strong&gt; Ten minutes between batches does more than coffee.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Brief teams on timing.&lt;/strong&gt; A firm pitch limit helps everyone, judges included.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;None of this is expensive.&lt;br&gt;
It just needs someone to think about the judge's day.&lt;br&gt;
Usually nobody does.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.rahuldk.in/posts/from-hackathon-loser-to-hackathon-jury/coffee-and-code-late-night.jpg&quot; alt=&quot;A coffee mug sits in front of a laptop showing code, lit by warm orange light late at night&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Photo: &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/@imkishorein&quot;&gt;Kishore V&lt;/a&gt; on &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/photos/a-coffee-cup-sitting-on-a-desk-next-to-a-laptop-tuSz_FGc3zg&quot;&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&quot;what-i-d-tell-my-participant-self&quot;&gt;What I'd tell my participant self&lt;/h3&gt;
&lt;p&gt;If I could go back to the nervous kid with the laptop:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Read the problem statement twice. Build for that.&lt;/li&gt;
&lt;li&gt;Pick boring tools you already know.&lt;/li&gt;
&lt;li&gt;Make one flow work perfectly.&lt;/li&gt;
&lt;li&gt;Say hello to the judge like a human.&lt;/li&gt;
&lt;li&gt;Stop talking when the demo's done.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;He wouldn't listen.&lt;br&gt;
He'd still over-engineer it.&lt;br&gt;
But it's nice to finally know the answers.&lt;/p&gt;
&lt;p&gt;Learning by doing it badly first is basically my whole method.&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/bio-maths-to-computer-science&quot;&gt;Bio-maths to computer science&lt;/a&gt; explains how that started.&lt;br&gt;
And &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/exams-the-office-and-a-1am-gate&quot;&gt;exams, the office and a 1 a.m. gate&lt;/a&gt; shows how it's going.&lt;/p&gt;
&lt;h3 id=&quot;faq-4&quot;&gt;FAQ&lt;/h3&gt;
&lt;h4 id=&quot;what-does-a-hackathon-jury-do-&quot;&gt;What does a hackathon jury do?&lt;/h4&gt;
&lt;p&gt;A hackathon jury evaluates team projects, usually against set criteria.&lt;br&gt;
That means watching demos, asking questions and scoring fairly.&lt;br&gt;
It also means staying sharp through a very long day.&lt;/p&gt;
&lt;h4 id=&quot;is-being-a-hackathon-judge-hard-&quot;&gt;Is being a hackathon judge hard?&lt;/h4&gt;
&lt;p&gt;More than it looks.&lt;br&gt;
You're making careful judgements back to back, for hours.&lt;br&gt;
And you're doing it with a calm face, for students who are very nervous.&lt;/p&gt;
&lt;h4 id=&quot;what-s-the-biggest-mistake-hackathon-teams-make-&quot;&gt;What's the biggest mistake hackathon teams make?&lt;/h4&gt;
&lt;p&gt;From the jury side, building too much and showing too little.&lt;br&gt;
One working flow beats an ambitious system that won't load.&lt;/p&gt;
&lt;h3 id=&quot;thanks-for-having-me&quot;&gt;Thanks for having me&lt;/h3&gt;
&lt;p&gt;Thanks to the Department of Computing Sciences and the Vels Innovation Council for inviting me.&lt;br&gt;
And to every team that pitched.&lt;br&gt;
Especially the ones who reminded me of my own old mistakes.&lt;/p&gt;
&lt;p&gt;I build products at &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.trackmytech.in&quot;&gt;TrackMy Tech&lt;/a&gt;.&lt;br&gt;
If you're organising a hackathon and want a judge, &lt;a rel=&quot;nofollow&quot; href=&quot;https://calendar.rahuldk.in&quot;&gt;book a call&lt;/a&gt;.&lt;br&gt;
I'll bring my polite, interested face.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/32521/from-hackathon-loser-to-hackathon-jury-the-loop-is-complete</guid>
<pubDate>Thu, 29 Oct 2026 04:30:00 +0000</pubDate>
</item>
<item>
<title>Outsourcing vs building it yourself: our app arrived from 2006</title>
<link>https://coderlegion.com/32517/outsourcing-vs-building-it-yourself-our-app-arrived-from-2006</link>
<description>&lt;p&gt;Every founder has a moment where they say, &quot;Fine. I'll do it myself.&quot;&lt;br&gt;
Mine came with a very specific smell.&lt;br&gt;
The smell of PHP and a design from another decade.&lt;/p&gt;
&lt;p&gt;This post is about outsourcing app development vs building it yourself.&lt;br&gt;
I've done the first one badly and the second one stubbornly.&lt;br&gt;
So I have opinions.&lt;br&gt;
Lots of them.&lt;/p&gt;
&lt;h3 id=&quot;the-idea-was-simple&quot;&gt;The idea was simple&lt;/h3&gt;
&lt;p&gt;It started with a coach complaining.&lt;br&gt;
His students' fee payments just wouldn't tally.&lt;/p&gt;
&lt;p&gt;Small problem.&lt;br&gt;
Annoying problem.&lt;br&gt;
The kind that sticks in your head.&lt;/p&gt;
&lt;p&gt;That problem became &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.trackmyacademy.com&quot;&gt;Track My Academy&lt;/a&gt;.&lt;br&gt;
The full origin story is in &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/a-coach-complained-so-i-started-a-company&quot;&gt;how a coach's complaint turned into a company&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;At that point, I had basically zero real coding experience.&lt;br&gt;
I'd made small, chota-chota apps.&lt;br&gt;
But I had no idea how an app actually works in production.&lt;br&gt;
Domains, servers, deployment: all a mystery.&lt;/p&gt;
&lt;p&gt;What I did have was a business mindset.&lt;br&gt;
How the product should look.&lt;br&gt;
How we'd get customers.&lt;br&gt;
How we'd get paid.&lt;br&gt;
That's it.&lt;/p&gt;
&lt;p&gt;So we did what sensible people do.&lt;br&gt;
We looked for freelancers and found an agency.&lt;br&gt;
The plan was to pay them for a white-label solution.&lt;/p&gt;
&lt;p&gt;On paper, that's textbook &lt;a rel=&quot;nofollow&quot; href=&quot;https://en.wikipedia.org/wiki/Outsourcing&quot;&gt;outsourcing&lt;/a&gt;.&lt;br&gt;
You pay an external provider to do work you'd otherwise do in-house.&lt;br&gt;
Except we didn't really have an &quot;in-house&quot;.&lt;br&gt;
We had enthusiasm.&lt;br&gt;
Enthusiasm is not a department.&lt;/p&gt;
&lt;h3 id=&quot;then-the-build-arrived&quot;&gt;Then the build arrived&lt;/h3&gt;
&lt;p&gt;I opened it.&lt;br&gt;
I looked at it.&lt;br&gt;
It looked back at me from 2006.&lt;br&gt;
It looked like it had jumped straight out of a template from that year.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.rahuldk.in/posts/the-app-that-arrived-from-2006/old-crt-computer-monitor.jpg&quot; alt=&quot;An old CRT computer monitor on a desk, the kind of screen our first outsourced app seemed designed for&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Photo: &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/@siri_louis&quot;&gt;Siri louis&lt;/a&gt; on &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/photos/silver-crt-computer-monitor-on-brown-wooden-desk-KdMgF5Q9EP4&quot;&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;PHP.&lt;br&gt;
A design that belonged in a museum.&lt;br&gt;
The kind of interface that makes you check your calendar.&lt;/p&gt;
&lt;p&gt;To be fair, PHP isn't the villain here.&lt;br&gt;
Plenty of good software runs on it.&lt;br&gt;
The design was the villain.&lt;br&gt;
And, probably, so was our brief.&lt;/p&gt;
&lt;p&gt;Not a single screen looked decent.&lt;br&gt;
The thing technically worked.&lt;br&gt;
But it looked so bad that nobody wanted to touch it.&lt;br&gt;
I was ashamed to show it even to my friends.&lt;br&gt;
That's how bad it was.&lt;/p&gt;
&lt;p&gt;So we scrapped the whole thing.&lt;/p&gt;
&lt;p&gt;I sat there and thought one clear thought.&lt;br&gt;
&quot;Damn. I'll do this myself.&quot;&lt;br&gt;
I'd build it with AI tools, the way people now call &lt;a rel=&quot;nofollow&quot; href=&quot;https://en.wikipedia.org/wiki/Vibe_coding&quot;&gt;vibe coding&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;the-stupidest-50-000-i-ve-ever-spent&quot;&gt;The stupidest ₹50,000 I've ever spent&lt;/h3&gt;
&lt;p&gt;Let me be honest about the price.&lt;br&gt;
We paid that agency ₹50,000.&lt;br&gt;
It's the stupidest way to spend 50k I can think of.&lt;/p&gt;
&lt;p&gt;And it wasn't even my money.&lt;br&gt;
It was my co-founder's.&lt;br&gt;
He didn't take it too hard.&lt;br&gt;
But I was responsible for that decision.&lt;br&gt;
I still feel bad about it, honestly.&lt;/p&gt;
&lt;h3 id=&quot;outsourcing-app-development-vs-building-it-yourself&quot;&gt;Outsourcing app development vs building it yourself&lt;/h3&gt;
&lt;p&gt;Here's my honest comparison, after one very educational PHP build.&lt;br&gt;
These are opinions, not laws of physics.&lt;/p&gt;
&lt;p&gt;Outsourcing makes sense when:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You know exactly what you want, down to the screens.&lt;/li&gt;
&lt;li&gt;The app supports your business but isn't the business.&lt;/li&gt;
&lt;li&gt;Someone on your side can review the code and the design.&lt;/li&gt;
&lt;li&gt;You have budget for a second round. There's always a second round.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Building it yourself makes sense when:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The product &lt;em&gt;is&lt;/em&gt; the business.&lt;/li&gt;
&lt;li&gt;You'll be changing it every week for years.&lt;/li&gt;
&lt;li&gt;You're willing to be bad at it for a while.&lt;/li&gt;
&lt;li&gt;You'd rather understand every bug than pay someone to explain it.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Track My Academy was clearly the second list.&lt;br&gt;
It's the company, not a side tool.&lt;/p&gt;
&lt;p&gt;There's also a third option people forget.&lt;br&gt;
Build the first version yourself.&lt;br&gt;
Then bring in people who already understand what you're making.&lt;br&gt;
For most student founders, that's where I'd point them.&lt;/p&gt;
&lt;h3 id=&quot;how-to-write-a-product-brief-that-doesn-t-come-back-from-2006&quot;&gt;How to write a product brief that doesn't come back from 2006&lt;/h3&gt;
&lt;p&gt;Here's the thing nobody tells you.&lt;/p&gt;
&lt;p&gt;If you can't describe what good looks like, you won't get good.&lt;br&gt;
You'll get whatever the builder thinks &quot;done&quot; means.&lt;/p&gt;
&lt;p&gt;And their &quot;done&quot; might be from 2006.&lt;/p&gt;
&lt;p&gt;Bigger companies write a &lt;a rel=&quot;nofollow&quot; href=&quot;https://en.wikipedia.org/wiki/Product_requirements_document&quot;&gt;product requirements document&lt;/a&gt;.&lt;br&gt;
It says what the product should do, not how to build it.&lt;br&gt;
You don't need forty pages.&lt;br&gt;
You need one honest page.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.rahuldk.in/posts/the-app-that-arrived-from-2006/website-wireframe-sketch.jpg&quot; alt=&quot;A hand-drawn website wireframe sketched on paper with an orange pen, the start of a clear product brief&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Photo: &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/@sigmund&quot;&gt;Compagnons&lt;/a&gt; on &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/photos/website-wireframe-sketch-on-paper-4UGmm3WRUoQ&quot;&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;My checklist for a one-page product brief:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Who it's for.&lt;/strong&gt; &quot;A coach with one batch&quot; beats &quot;sports organisations&quot;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The one painful job.&lt;/strong&gt; For us, that was attendance and payments.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Three apps you like the look of.&lt;/strong&gt; Screenshots, not adjectives.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What &quot;done&quot; means.&lt;/strong&gt; Which screens, which actions, which devices.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What you won't build yet.&lt;/strong&gt; This list saves more money than any discount.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Who checks the work.&lt;/strong&gt; If nobody can read code, say so upfront.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Point three is the one I'd underline twice.&lt;br&gt;
&quot;Modern and clean&quot; means nothing.&lt;br&gt;
Every design was modern and clean once.&lt;br&gt;
Even in 2006.&lt;/p&gt;
&lt;p&gt;The aim is a &lt;a rel=&quot;nofollow&quot; href=&quot;https://en.wikipedia.org/wiki/Minimum_viable_product&quot;&gt;minimum viable product&lt;/a&gt;.&lt;br&gt;
That means just enough features for early users to actually use it.&lt;br&gt;
Then their feedback tells you what to build next.&lt;br&gt;
Not your imagination at 2 a.m.&lt;/p&gt;
&lt;h3 id=&quot;the-first-night-of-building-a-saas-mvp-myself&quot;&gt;The first night of building a SaaS MVP myself&lt;/h3&gt;
&lt;p&gt;My setup was not exactly a startup lab.&lt;/p&gt;
&lt;p&gt;A MacBook Air.&lt;br&gt;
A second-hand iPhone my cofounder got me.&lt;br&gt;
ChatGPT.&lt;br&gt;
VS Code.&lt;/p&gt;
&lt;p&gt;That was the entire tech stack of my ambition.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.rahuldk.in/posts/the-app-that-arrived-from-2006/first-workspace.jpg&quot; alt=&quot;Rahul at his first workspace with a MacBook and an iPhone, the Track My Academy goals poster behind him&quot;&gt;&lt;/p&gt;
&lt;p&gt;Did I start coding immediately?&lt;br&gt;
No.&lt;br&gt;
Mostly, I researched.&lt;/p&gt;
&lt;p&gt;How do real products look?&lt;br&gt;
How do people structure an app like this?&lt;br&gt;
Why does everything I write look worse than everything I see?&lt;/p&gt;
&lt;p&gt;By the end of it, I'd built a landing page.&lt;br&gt;
A landing page I actually liked.&lt;br&gt;
That was the night I stopped waiting for someone else.&lt;/p&gt;
&lt;p&gt;Building it properly took about three months.&lt;br&gt;
The first working version alone took more than a month and a half.&lt;br&gt;
Changes, then more changes, then changes to the changes.&lt;/p&gt;
&lt;p&gt;When I look at that first version now, I'm honestly embarrassed.&lt;br&gt;
It might be the worst thing that ever happened to a piece of software.&lt;br&gt;
The version we have today? I'm really proud of it.&lt;/p&gt;
&lt;p&gt;I learn by touching the thing until it makes sense.&lt;br&gt;
That means doing it badly first, then slightly less badly.&lt;br&gt;
The AI help came from wherever we could find it.&lt;br&gt;
That story is in &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/dozens-of-email-accounts-and-zero-shame&quot;&gt;dozens of email accounts and zero shame&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;the-modern-stack-i-ended-up-with&quot;&gt;The modern stack I ended up with&lt;/h3&gt;
&lt;p&gt;No PHP this time.&lt;br&gt;
Again, nothing against PHP.&lt;br&gt;
I just needed a fresh start and a clean conscience.&lt;/p&gt;
&lt;p&gt;Here's what Track My Academy runs on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;React&lt;/strong&gt; for the web front end.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://fastapi.tiangolo.com/&quot;&gt;FastAPI&lt;/a&gt;&lt;/strong&gt;, a Python framework for building APIs with type hints.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MongoDB&lt;/strong&gt;, a document database.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://supabase.com/docs&quot;&gt;Supabase&lt;/a&gt;&lt;/strong&gt;, which bundles Postgres, auth, storage and realtime features.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AWS EC2&lt;/strong&gt; and &lt;strong&gt;Vercel&lt;/strong&gt;, where things actually run.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Razorpay&lt;/strong&gt;, the payments gateway.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Firebase&lt;/strong&gt; and &lt;strong&gt;Redis&lt;/strong&gt;, quietly doing their jobs in the background.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;None of this is exotic.&lt;br&gt;
It's just current.&lt;br&gt;
And I can explain why every piece is there.&lt;/p&gt;
&lt;p&gt;That's my real advice for anyone outsourcing.&lt;br&gt;
Ask the builder, &quot;Which stack, and why?&quot;&lt;br&gt;
If the answer is &quot;it's what we always use&quot;, that's information.&lt;br&gt;
Treat it like a yellow card.&lt;/p&gt;
&lt;p&gt;Knowing the stack also means knowing exactly how to break it.&lt;br&gt;
I proved that when &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/the-night-i-broke-production&quot;&gt;I took production down for hours&lt;/a&gt;.&lt;br&gt;
Ownership cuts both ways.&lt;/p&gt;
&lt;h3 id=&quot;then-i-built-the-android-and-ios-apps-too&quot;&gt;Then I built the Android and iOS apps too&lt;/h3&gt;
&lt;p&gt;The web app wasn't the end.&lt;br&gt;
Coaches aren't sitting at desks.&lt;br&gt;
They're on a pitch, holding a phone and a whistle.&lt;/p&gt;
&lt;p&gt;So I built the Android and iOS apps for Track My Academy.&lt;br&gt;
The Android app is live in production.&lt;br&gt;
The iOS app is coming soon.&lt;br&gt;
Apple reviews things slowly. So do I, to be fair.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.rahuldk.in/posts/the-app-that-arrived-from-2006/android-and-iphone-apps.jpg&quot; alt=&quot;Two smartphones held up against a city skyline, one Android and one iPhone&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Photo: &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/@rmrdnl&quot;&gt;Daniel Romero&lt;/a&gt; on &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/photos/two-smartphones-held-up-against-city-skyline-txROtUzmo_c&quot;&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This is where building it yourself pays off.&lt;br&gt;
I'd built the backend, so I knew it inside out.&lt;br&gt;
The apps were new screens, not new mysteries.&lt;/p&gt;
&lt;p&gt;If I'd outsourced the web app, the mobile apps would've started from zero.&lt;br&gt;
Or from 2006 again.&lt;br&gt;
I'm not sure which is worse.&lt;/p&gt;
&lt;p&gt;Today &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.trackmyacademy.com&quot;&gt;Track My Academy&lt;/a&gt; covers attendance, fees, player analytics and parent communication.&lt;br&gt;
Real academies run on it.&lt;br&gt;
It's multi-tenant and role-based, which is a fancy way of saying &quot;complicated&quot;.&lt;br&gt;
It works on the web and Android, with iOS coming soon.&lt;br&gt;
It's published by &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.trackmytech.in&quot;&gt;TrackMy Tech&lt;/a&gt;, our bootstrapped sports-tech company.&lt;/p&gt;
&lt;h3 id=&quot;what-i-learned-from-the-2006-build&quot;&gt;What I learned from the 2006 build&lt;/h3&gt;
&lt;p&gt;I'm not angry at the agency that built it.&lt;br&gt;
Okay, a little.&lt;br&gt;
Mostly at myself.&lt;/p&gt;
&lt;p&gt;Outsourcing works when you know what you want.&lt;br&gt;
It doesn't work when you're hoping someone reads your mind.&lt;/p&gt;
&lt;p&gt;Building it myself meant I understood every piece.&lt;br&gt;
When something breaks, I know where to look.&lt;br&gt;
When a coach wants a feature, I know what it costs.&lt;/p&gt;
&lt;p&gt;None of that exists if I'd accepted the museum piece.&lt;/p&gt;
&lt;p&gt;So, should you build it yourself?&lt;br&gt;
Not always.&lt;br&gt;
But if what comes back makes you wince, listen to the wince.&lt;/p&gt;
&lt;p&gt;Your irritation is data.&lt;/p&gt;
&lt;p&gt;Mine turned into a company.&lt;br&gt;
Yours might turn into something too.&lt;br&gt;
Or at least into a better landing page.&lt;/p&gt;
&lt;p&gt;I'll take either.&lt;/p&gt;
&lt;h3 id=&quot;faq-5&quot;&gt;FAQ&lt;/h3&gt;
&lt;h4 id=&quot;is-it-cheaper-to-outsource-app-development-or-build-it-yourself-&quot;&gt;Is it cheaper to outsource app development or build it yourself?&lt;/h4&gt;
&lt;p&gt;Outsourcing usually looks cheaper on day one.&lt;br&gt;
Building yourself costs time instead of money.&lt;br&gt;
Outsourcing costs money, then often time anyway, in revisions.&lt;br&gt;
If the product is your business, I'd rather pay with time.&lt;/p&gt;
&lt;h4 id=&quot;what-should-a-product-brief-for-a-developer-include-&quot;&gt;What should a product brief for a developer include?&lt;/h4&gt;
&lt;p&gt;Who it's for and the one painful job it solves.&lt;br&gt;
Three reference apps, with screenshots.&lt;br&gt;
A clear definition of done, and a list of what's out of scope.&lt;br&gt;
And who will review the work before you pay for it.&lt;/p&gt;
&lt;h4 id=&quot;can-a-non-technical-founder-build-a-saas-mvp-&quot;&gt;Can a non-technical founder build a SaaS MVP?&lt;/h4&gt;
&lt;p&gt;I was a bio-maths student in class 12.&lt;br&gt;
That story is in &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/bio-maths-to-computer-science&quot;&gt;how I ended up in computer science&lt;/a&gt;.&lt;br&gt;
So yes, eventually.&lt;br&gt;
Expect to be bad at it first.&lt;br&gt;
That's the tuition fee.&lt;/p&gt;
&lt;h3 id=&quot;your-turn&quot;&gt;Your turn&lt;/h3&gt;
&lt;p&gt;Run a sports academy and tired of spreadsheets?&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.trackmyacademy.com&quot;&gt;Try Track My Academy&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Stuck deciding between outsourcing and building it yourself?&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://calendar.rahuldk.in&quot;&gt;Book a call with me&lt;/a&gt; and we can argue about it.&lt;/p&gt;
&lt;p&gt;Or see where all this happens now, in &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/three-monitors-one-monster-can&quot;&gt;my three-monitor desk setup&lt;/a&gt;.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/32517/outsourcing-vs-building-it-yourself-our-app-arrived-from-2006</guid>
<pubDate>Tue, 27 Oct 2026 08:30:00 +0000</pubDate>
</item>
<item>
<title>A coach complained, so I built sports academy management software</title>
<link>https://coderlegion.com/32516/a-coach-complained-so-i-built-sports-academy-management-software</link>
<description>&lt;p&gt;&lt;em&gt;Cover photo: &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/@acrehuet98&quot;&gt;Adrià Crehuet Cano&lt;/a&gt; on &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/photos/children-playing-soccer-LIhB1_mAGhY&quot;&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Most startup stories begin with a vision.&lt;br&gt;
Mine began with a complaint.&lt;/p&gt;
&lt;p&gt;Not even my complaint.&lt;br&gt;
Two other people's.&lt;/p&gt;
&lt;p&gt;This is the story of how &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.trackmyacademy.com&quot;&gt;Track My Academy&lt;/a&gt; started.&lt;br&gt;
It is sports academy management software now.&lt;br&gt;
Back then, it was one tired coach, one frustrated academy owner and a messy spreadsheet.&lt;/p&gt;
&lt;p&gt;I'm writing it down because people keep asking where the idea came from.&lt;br&gt;
The honest answer is less heroic than they hope.&lt;/p&gt;
&lt;h3 id=&quot;the-evening-it-started&quot;&gt;The evening it started&lt;/h3&gt;
&lt;p&gt;I was coaching football part-time at a sports academy.&lt;/p&gt;
&lt;p&gt;Nothing glamorous.&lt;br&gt;
Cones, whistles, and a lot of shouting about passing.&lt;/p&gt;
&lt;p&gt;One evening, I noticed a coach struggling with his phone.&lt;br&gt;
He was trying to match his students' fee payments.&lt;br&gt;
On one side, the payments in his Google Pay account.&lt;br&gt;
On the other, the manual entries he'd been writing down.&lt;br&gt;
They didn't tally.&lt;/p&gt;
&lt;p&gt;I asked the obvious question.&lt;br&gt;
&quot;Why don't you just use an Excel sheet?&quot;&lt;/p&gt;
&lt;p&gt;His answer was very honest.&lt;br&gt;
He runs everything from his phone.&lt;br&gt;
Keeping an Excel sheet updated every time just wasn't happening.&lt;/p&gt;
&lt;p&gt;The academy's owner was listening.&lt;br&gt;
He's now my co-founder, which tells you how this story ends.&lt;br&gt;
He asked me something simple.&lt;br&gt;
&quot;Why don't you build a small app for these guys?&quot;&lt;/p&gt;
&lt;p&gt;Coaches would enter their payment details.&lt;br&gt;
Everything would land in an Excel sheet automatically.&lt;br&gt;
No more tallying at night.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.rahuldk.in/posts/a-coach-complained-so-i-started-a-company/coach-tying-young-players-boots.jpg&quot; alt=&quot;A football coach kneeling to tie a young player's boot during training&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Photo: &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/@acrehuet98&quot;&gt;Adrià Crehuet Cano&lt;/a&gt; on &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/photos/man-tying-boys-shoes-on-field-yndHHu2kJAw&quot;&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&quot;the-first-prototype-a-spreadsheet-pretending-to-be-an-app&quot;&gt;The first prototype: a spreadsheet pretending to be an app&lt;/h3&gt;
&lt;p&gt;So I built the simplest thing possible.&lt;br&gt;
It didn't even have a database.&lt;br&gt;
The Excel sheet was the database.&lt;br&gt;
Yes, really.&lt;/p&gt;
&lt;p&gt;The app was just a small form.&lt;br&gt;
A coach entered how much they'd received.&lt;br&gt;
They pasted the payment ID from Google Pay.&lt;br&gt;
Done.&lt;/p&gt;
&lt;p&gt;The entry dropped straight into the sheet.&lt;br&gt;
The sheet was shared automatically.&lt;br&gt;
The owner could open it any time and see everything.&lt;/p&gt;
&lt;p&gt;It was ugly. It was tiny. It worked.&lt;br&gt;
That was the very first prototype of Track My Academy.&lt;/p&gt;
&lt;h3 id=&quot;from-one-academy-to-wait-why-not-everyone-&quot;&gt;From one academy to &quot;wait, why not everyone?&quot;&lt;/h3&gt;
&lt;p&gt;Then a thought hit me.&lt;br&gt;
Hey, wait.&lt;br&gt;
Why can't I sell this to other people?&lt;/p&gt;
&lt;p&gt;Plenty of academies had exactly this problem.&lt;br&gt;
Fees tracked on paper, phones and memory.&lt;br&gt;
And player training was just as messy.&lt;br&gt;
Who attended. Who improved. Who needs more work.&lt;/p&gt;
&lt;p&gt;So the payments form grew up.&lt;br&gt;
It became sports academy management software.&lt;br&gt;
Later, it also became a sports analytics tool, in the same app.&lt;br&gt;
How the analytics got in there is a story for another post.&lt;/p&gt;
&lt;h3 id=&quot;why-sports-academy-management-software-is-a-boring-problem-worth-solving&quot;&gt;Why sports academy management software is a boring problem worth solving&lt;/h3&gt;
&lt;p&gt;Here's something nobody tells you about startups.&lt;br&gt;
The best problems are usually boring.&lt;/p&gt;
&lt;p&gt;Attendance registers. Fee reminders. Who paid. Who didn't.&lt;br&gt;
Nobody makes a film about fee reminders.&lt;/p&gt;
&lt;p&gt;But coaches deal with this every single day.&lt;br&gt;
And every hour spent on paperwork is an hour not spent coaching.&lt;/p&gt;
&lt;p&gt;That's not boring to them.&lt;br&gt;
That's their whole evening.&lt;/p&gt;
&lt;p&gt;Paul Graham has a name for why people skip these problems.&lt;br&gt;
He calls it &lt;a rel=&quot;nofollow&quot; href=&quot;https://paulgraham.com/schlep.html&quot;&gt;schlep blindness&lt;/a&gt;.&lt;br&gt;
Your brain quietly hides ideas that involve tedious work.&lt;/p&gt;
&lt;p&gt;Jared Friedman says something similar in &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.ycombinator.com/library/8g-how-to-get-startup-ideas&quot;&gt;YC's talk on getting startup ideas&lt;/a&gt;.&lt;br&gt;
His example is Gusto, which makes payroll software.&lt;br&gt;
Lots of programmers knew payroll software was bad.&lt;br&gt;
Nobody fixed it, because it was boring.&lt;/p&gt;
&lt;p&gt;Sports admin is the same flavour of boring.&lt;br&gt;
Which, in my opinion, is exactly why it was worth doing.&lt;/p&gt;
&lt;h3 id=&quot;attendance-tracking-for-sports-academies&quot;&gt;Attendance tracking for sports academies&lt;/h3&gt;
&lt;p&gt;Let's start with the original villain.&lt;/p&gt;
&lt;p&gt;Attendance tracking for sports academies sounds trivial.&lt;br&gt;
It is not.&lt;/p&gt;
&lt;p&gt;Batches change.&lt;br&gt;
Kids switch timings.&lt;br&gt;
Some coaches cover two branches.&lt;br&gt;
Somebody always forgets the register at home.&lt;/p&gt;
&lt;p&gt;Paper works until it doesn't.&lt;br&gt;
Then you're reconstructing last month from memory and a WhatsApp group.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.rahuldk.in/posts/a-coach-complained-so-i-started-a-company/handwritten-attendance-notes.jpg&quot; alt=&quot;A person writing notes on a sheet of paper at a desk&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Photo: &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/@kobilly&quot;&gt;Billy Albert&lt;/a&gt; on &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/photos/a-person-writing-on-a-piece-of-paper-5lNKe_pE3oA&quot;&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In Track My Academy, &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.trackmyacademy.com/#features&quot;&gt;attendance&lt;/a&gt; is the boring core.&lt;br&gt;
Check-in can be by QR code, biometric or the mobile app.&lt;br&gt;
Coaches get alerts when someone is absent.&lt;/p&gt;
&lt;p&gt;That last bit matters more than it sounds.&lt;br&gt;
A missed session is a small signal.&lt;br&gt;
Three missed sessions is a conversation with a parent.&lt;/p&gt;
&lt;h3 id=&quot;fee-collection-and-reminders-without-the-awkwardness&quot;&gt;Fee collection and reminders without the awkwardness&lt;/h3&gt;
&lt;p&gt;Then there's money.&lt;/p&gt;
&lt;p&gt;Nobody likes chasing fees.&lt;br&gt;
Coaches especially hate it.&lt;br&gt;
They signed up to teach a sport, not run accounts receivable.&lt;/p&gt;
&lt;p&gt;So the software handles fee collection and reminders.&lt;br&gt;
Invoices go out.&lt;br&gt;
Reminders go out.&lt;br&gt;
Payments get recorded.&lt;/p&gt;
&lt;p&gt;The coach doesn't have to be the bad guy at the gate.&lt;br&gt;
The system can be the bad guy.&lt;br&gt;
Systems don't mind.&lt;/p&gt;
&lt;p&gt;The stack includes React, FastAPI, MongoDB, Supabase and Razorpay.&lt;br&gt;
Plus a few friends I won't list here.&lt;br&gt;
I'll spare you the architecture diagram.&lt;/p&gt;
&lt;h3 id=&quot;player-progress-tracking-and-parent-communication&quot;&gt;Player progress tracking and parent communication&lt;/h3&gt;
&lt;p&gt;Attendance and fees were the complaint.&lt;br&gt;
But once the data was in one place, more became possible.&lt;/p&gt;
&lt;p&gt;Player progress tracking was the obvious next step.&lt;br&gt;
Coaches can log performance and see trends over time.&lt;br&gt;
Pace, endurance, accuracy, skill.&lt;/p&gt;
&lt;p&gt;Parents can see shareable player reports on their phone.&lt;br&gt;
Which, frankly, saves a lot of &quot;so how is he doing?&quot; chats after training.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.rahuldk.in/posts/a-coach-complained-so-i-started-a-company/checking-phone-outdoors.jpg&quot; alt=&quot;A hand holding a smartphone showing notifications on the lock screen&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Photo: &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/@jamie452&quot;&gt;Jamie Street&lt;/a&gt; on &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/photos/person-holding-phone-33oxtOMk6Ac&quot;&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Parent communication lives there too.&lt;br&gt;
Announcements, session updates and direct messages.&lt;br&gt;
No more screenshotting the timetable into six groups.&lt;/p&gt;
&lt;p&gt;It's a &lt;a rel=&quot;nofollow&quot; href=&quot;https://en.wikipedia.org/wiki/Software_as_a_service&quot;&gt;software as a service&lt;/a&gt; product.&lt;br&gt;
The academy doesn't host anything.&lt;br&gt;
It just logs in.&lt;/p&gt;
&lt;p&gt;It's also &lt;a rel=&quot;nofollow&quot; href=&quot;https://en.wikipedia.org/wiki/Multitenancy&quot;&gt;multi-tenant&lt;/a&gt;.&lt;br&gt;
Many academies can share one system, each with separate data.&lt;/p&gt;
&lt;p&gt;And it uses &lt;a rel=&quot;nofollow&quot; href=&quot;https://en.wikipedia.org/wiki/Role-based_access_control&quot;&gt;role-based access control&lt;/a&gt;.&lt;br&gt;
Owners, coaches and parents each see what their role allows.&lt;br&gt;
A parent should not be able to edit the fee ledger.&lt;br&gt;
Tempting as that might be for them.&lt;/p&gt;
&lt;p&gt;There's a web app and an Android app.&lt;br&gt;
The iOS app is coming soon.&lt;br&gt;
I built the mobile apps myself.&lt;br&gt;
That sentence is doing a lot of heavy lifting.&lt;/p&gt;
&lt;p&gt;And real academies run on it.&lt;br&gt;
That part still feels slightly unreal.&lt;/p&gt;
&lt;h3 id=&quot;from-a-2006-looking-app-to-building-it-myself&quot;&gt;From a 2006-looking app to building it myself&lt;/h3&gt;
&lt;p&gt;The road there was not straight.&lt;/p&gt;
&lt;p&gt;For the full product, we first hired someone to build it.&lt;br&gt;
What came back was PHP, terrible design, and looked like 2006.&lt;br&gt;
I wrote about &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/the-app-that-arrived-from-2006&quot;&gt;the app that arrived from 2006&lt;/a&gt; separately.&lt;br&gt;
It is a whole saga.&lt;/p&gt;
&lt;p&gt;So I decided to build it myself.&lt;/p&gt;
&lt;p&gt;The first night was a MacBook Air.&lt;br&gt;
A second-hand iPhone my cofounder got me.&lt;br&gt;
ChatGPT and VS Code.&lt;/p&gt;
&lt;p&gt;Mostly research.&lt;br&gt;
Then a landing page I actually liked.&lt;/p&gt;
&lt;p&gt;I learn by touching the thing until it makes sense.&lt;br&gt;
Usually by doing it badly first.&lt;/p&gt;
&lt;p&gt;Later came the less glamorous lessons.&lt;br&gt;
Like hunting free AI trials across &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/dozens-of-email-accounts-and-zero-shame&quot;&gt;dozens of email accounts&lt;/a&gt;.&lt;br&gt;
And &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/the-night-i-broke-production&quot;&gt;the night I broke production&lt;/a&gt; by splitting the backend.&lt;/p&gt;
&lt;h3 id=&quot;trackmy-tech-cp-sports-and-the-titles-i-didn-t-expect&quot;&gt;TrackMy Tech, CP Sports, and the titles I didn't expect&lt;/h3&gt;
&lt;p&gt;Track My Academy started in December 2024.&lt;/p&gt;
&lt;p&gt;Since June 2026, it has a proper home.&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.trackmytech.in&quot;&gt;TrackMy Tech Pvt Ltd&lt;/a&gt; is the sports-tech and SaaS company that publishes it.&lt;br&gt;
It's bootstrapped.&lt;br&gt;
I'm its Executive Director.&lt;/p&gt;
&lt;p&gt;Which still sounds funny to me.&lt;br&gt;
I'm also a student.&lt;br&gt;
The exams have not been informed of my title.&lt;br&gt;
More on that in &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/exams-the-office-and-a-1am-gate&quot;&gt;exams, the office and a 1 a.m. gate&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Separately, I'm Technical Operations Manager at CP Sports.&lt;br&gt;
I built its first official website and internal academy and event tools.&lt;br&gt;
I also manage the digital team and coordinate coaches across branches.&lt;/p&gt;
&lt;p&gt;That job keeps me close to how academies actually run.&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/veeran-ruined-football-for-me&quot;&gt;Veeran&lt;/a&gt; came later, built at TrackMy Tech.&lt;/p&gt;
&lt;h3 id=&quot;what-coaching-taught-me-about-building&quot;&gt;What coaching taught me about building&lt;/h3&gt;
&lt;p&gt;Coaching and building products are weirdly similar.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You can't redo the first half.&lt;/strong&gt;&lt;br&gt;
Football has twenty-two players, ninety minutes, and no undo button.&lt;br&gt;
Production software feels exactly the same.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Listen more than you talk.&lt;/strong&gt;&lt;br&gt;
That coach didn't pitch me a startup idea.&lt;br&gt;
He just couldn't make his payments tally.&lt;br&gt;
The idea was hiding inside the complaint.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fix what people actually do.&lt;/strong&gt;&lt;br&gt;
Coaches don't want dashboards for fun.&lt;br&gt;
They want to finish admin and get back to the pitch.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.rahuldk.in/posts/a-coach-complained-so-i-started-a-company/football-on-training-pitch.jpg&quot; alt=&quot;A football resting on the grass of a training pitch under a player's boot&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Photo: &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/@concoyne&quot;&gt;Connor Coyne&lt;/a&gt; on &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/photos/white-and-blue-soccer-ball-on-green-grass-field-OgqWLzWRSaI&quot;&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&quot;finding-startup-ideas-in-real-complaints&quot;&gt;Finding startup ideas in real complaints&lt;/h3&gt;
&lt;p&gt;Stop looking for big ideas.&lt;/p&gt;
&lt;p&gt;Paul Graham puts it neatly in &lt;a rel=&quot;nofollow&quot; href=&quot;https://paulgraham.com/startupideas.html&quot;&gt;How to Get Startup Ideas&lt;/a&gt;.&lt;br&gt;
The verb you want is not &quot;think up&quot;.&lt;br&gt;
It's &quot;notice&quot;.&lt;/p&gt;
&lt;p&gt;Go and sit near people doing their actual jobs.&lt;br&gt;
Wait for them to complain.&lt;/p&gt;
&lt;p&gt;Write down the complaint.&lt;/p&gt;
&lt;p&gt;Then ask a few annoying questions.&lt;br&gt;
How often does this happen?&lt;br&gt;
What do you do about it now?&lt;br&gt;
Would you pay to never deal with it again?&lt;/p&gt;
&lt;p&gt;If the answers are &quot;daily&quot;, &quot;a spreadsheet&quot; and &quot;yes&quot;, congratulations.&lt;br&gt;
You may have a company.&lt;/p&gt;
&lt;p&gt;It won't sound exciting at a party.&lt;br&gt;
It will sound very exciting to the person who has that problem.&lt;/p&gt;
&lt;p&gt;And honestly? Parties are overrated anyway.&lt;br&gt;
I'd rather be at the office.&lt;/p&gt;
&lt;p&gt;Which is probably a problem of its own.&lt;/p&gt;
&lt;h3 id=&quot;faq-6&quot;&gt;FAQ&lt;/h3&gt;
&lt;h4 id=&quot;what-is-sports-academy-management-software-&quot;&gt;What is sports academy management software?&lt;/h4&gt;
&lt;p&gt;It's software that runs the admin side of a sports academy.&lt;br&gt;
Attendance, fees, player progress and parent messages, in one place.&lt;br&gt;
Ideally, so the coach can go back to coaching.&lt;/p&gt;
&lt;h4 id=&quot;does-track-my-academy-work-on-phones-&quot;&gt;Does Track My Academy work on phones?&lt;/h4&gt;
&lt;p&gt;Yes.&lt;br&gt;
There's a web app and an Android app, and the iOS app is coming soon.&lt;br&gt;
Coaches and parents mostly live on their phones anyway.&lt;/p&gt;
&lt;h4 id=&quot;how-do-i-find-a-startup-idea-&quot;&gt;How do I find a startup idea?&lt;/h4&gt;
&lt;p&gt;Notice problems instead of inventing them.&lt;br&gt;
Boring, repeated, slightly embarrassing problems are the best ones.&lt;br&gt;
Then check whether people would actually pay to make them go away.&lt;/p&gt;
&lt;h3 id=&quot;try-it-or-talk-to-me&quot;&gt;Try it, or talk to me&lt;/h3&gt;
&lt;p&gt;If you run an academy, &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.trackmyacademy.com&quot;&gt;take a look at Track My Academy&lt;/a&gt;.&lt;br&gt;
There's a free plan, so the risk is mostly your time.&lt;/p&gt;
&lt;p&gt;If you'd rather talk it through, &lt;a rel=&quot;nofollow&quot; href=&quot;https://calendar.rahuldk.in&quot;&gt;book a call with me&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Or read how the &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/rip-smart-ball-v1&quot;&gt;smart football prototype&lt;/a&gt; went.&lt;br&gt;
Spoiler: it's in the title.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/32516/a-coach-complained-so-i-built-sports-academy-management-software</guid>
<pubDate>Tue, 27 Oct 2026 04:30:00 +0000</pubDate>
</item>
<item>
<title>Production outage lessons: we blamed our code. It was SSL.</title>
<link>https://coderlegion.com/32504/production-outage-lessons-we-blamed-our-code-it-was-ssl</link>
<description>&lt;p&gt;Building a product is one job.&lt;br&gt;
Keeping it alive is a completely different job.&lt;/p&gt;
&lt;p&gt;Nobody warns you about the second one.&lt;br&gt;
Or they do, and you don't listen.&lt;br&gt;
I didn't listen.&lt;/p&gt;
&lt;p&gt;This post is my production outage lessons, learnt the expensive way.&lt;br&gt;
One backend split, one expired SSL certificate, four hours of blaming the wrong thing.&lt;br&gt;
And what I'd do differently: checklists, rollbacks, monitoring and postmortems.&lt;/p&gt;
&lt;h3 id=&quot;the-clever-idea-splitting-the-backend&quot;&gt;The clever idea: splitting the backend&lt;/h3&gt;
&lt;p&gt;This happened in 2026, not long after we incorporated TrackMy Tech.&lt;br&gt;
We'd just become a private limited company.&lt;br&gt;
And we had a nagging feeling we weren't doing things professionally enough.&lt;br&gt;
We wanted to fix that.&lt;/p&gt;
&lt;p&gt;We also had real problems.&lt;br&gt;
Lots of payment-related issues.&lt;br&gt;
A steady stream of API errors.&lt;br&gt;
And the load wasn't balancing well.&lt;/p&gt;
&lt;p&gt;Then an Instagram reel showed up.&lt;br&gt;
I shared it with the team.&lt;br&gt;
&quot;This model is so capable. We can try some serious stuff with it.&quot;&lt;br&gt;
That one reel kicked off the whole cycle.&lt;/p&gt;
&lt;p&gt;The plan: split the backend into separate pieces.&lt;br&gt;
We used an AI coding agent to do the heavy lifting.&lt;br&gt;
To be fair to the agent, it did its job.&lt;br&gt;
It was us who got things wrong.&lt;/p&gt;
&lt;p&gt;On paper, splitting load sounds smart.&lt;br&gt;
Spread the work. Feel like a real engineering team.&lt;br&gt;
Put &quot;distributed&quot; in your head and feel tall.&lt;/p&gt;
&lt;h3 id=&quot;then-everything-went-down&quot;&gt;Then everything went down&lt;/h3&gt;
&lt;p&gt;Not slowly. Not politely.&lt;br&gt;
Everything went down.&lt;br&gt;
For hours.&lt;/p&gt;
&lt;p&gt;If you've never broken production, let me describe the feeling.&lt;br&gt;
Your stomach drops to somewhere near your shoes.&lt;br&gt;
Every message notification sounds like an accusation.&lt;/p&gt;
&lt;p&gt;Real academies use &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.trackmyacademy.com&quot;&gt;Track My Academy&lt;/a&gt;.&lt;br&gt;
Real coaches. Real parents. Real attendance.&lt;/p&gt;
&lt;p&gt;None of them care about our clever architecture.&lt;br&gt;
They care that the app works.&lt;/p&gt;
&lt;p&gt;And it did not work.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.rahuldk.in/posts/the-night-i-broke-production/server-room-network-cabinets.jpg&quot; alt=&quot;A server room with rows of network cabinets under blue cables&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Photo: &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/@tvick&quot;&gt;Taylor Vick&lt;/a&gt; on &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/photos/server-room-with-network-cabinets-aWslrFhs1w4&quot;&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&quot;the-real-culprit-an-expired-ssl-certificate&quot;&gt;The real culprit: an expired SSL certificate&lt;/h3&gt;
&lt;p&gt;We were sure we'd broken the code.&lt;br&gt;
So we did what any panicking team does.&lt;br&gt;
We checked the split.&lt;br&gt;
We checked the code.&lt;br&gt;
Then we checked it all again.&lt;/p&gt;
&lt;p&gt;About four hours later, we found it.&lt;br&gt;
It wasn't the code at all.&lt;br&gt;
The SSL certificate on our backend domain had expired.&lt;br&gt;
Right in the middle of the transition.&lt;/p&gt;
&lt;p&gt;It was failing silently.&lt;br&gt;
And we were busy blaming our own clever architecture.&lt;/p&gt;
&lt;p&gt;When we finally saw it, we just stared at the screen.&lt;br&gt;
Oh God.&lt;br&gt;
This is why debugging is hard.&lt;/p&gt;
&lt;p&gt;Here's why it's so sneaky.&lt;br&gt;
A &lt;a rel=&quot;nofollow&quot; href=&quot;https://en.wikipedia.org/wiki/Public_key_certificate&quot;&gt;TLS certificate&lt;/a&gt; proves a server is who it claims to be.&lt;br&gt;
Every certificate has a &quot;Not After&quot; date.&lt;br&gt;
After that date, it's simply no longer valid.&lt;br&gt;
Apps and browsers stop trusting the server, and requests fail.&lt;/p&gt;
&lt;p&gt;Short certificate lifetimes are normal now.&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://letsencrypt.org/docs/faq/&quot;&gt;Let's Encrypt says&lt;/a&gt; its default certificates are valid for 90 days.&lt;br&gt;
It recommends renewing them every 60 days.&lt;br&gt;
Miss a renewal and the clock just quietly runs out.&lt;/p&gt;
&lt;p&gt;The timing is what fooled us.&lt;br&gt;
Two things changed at once: our backend, and the certificate's validity.&lt;br&gt;
So naturally we blamed the change we'd made ourselves.&lt;/p&gt;
&lt;p&gt;Google's &lt;a rel=&quot;nofollow&quot; href=&quot;https://sre.google/sre-book/introduction/&quot;&gt;SRE book&lt;/a&gt; says roughly 70% of outages come from changes to a live system.&lt;br&gt;
We were the change.&lt;br&gt;
We just weren't the cause.&lt;/p&gt;
&lt;h3 id=&quot;the-longest-night-in-the-office&quot;&gt;The longest night in the office&lt;/h3&gt;
&lt;p&gt;I stayed in the office all night.&lt;/p&gt;
&lt;p&gt;Not because it looks dedicated on LinkedIn.&lt;br&gt;
Because it was my mess, and I wanted it fixed.&lt;/p&gt;
&lt;p&gt;There's a special kind of quiet in an office at 3 a.m.&lt;br&gt;
It's just you, the monitors, and your mistakes.&lt;/p&gt;
&lt;p&gt;The Monster cans on the wall were not decoration that night.&lt;br&gt;
They were fuel.&lt;br&gt;
(The full tour of that desk is in &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/three-monitors-one-monster-can&quot;&gt;three monitors, one Monster can&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;Office nights are not rare for me, sadly.&lt;br&gt;
That's a whole other post: &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/exams-the-office-and-a-1am-gate&quot;&gt;exams, the office and a 1 a.m. gate&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;when-i-m-stuck-badly-enough-i-call-arun&quot;&gt;When I'm stuck badly enough, I call Arun&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://www.rahuldk.in/posts/the-night-i-broke-production/arun.jpg&quot; alt=&quot;Arun, our CTO, smiling at the camera&quot;&gt;&lt;/p&gt;
&lt;p&gt;Every founder needs one person who picks up at any hour.&lt;br&gt;
For me, that's Arun. Our CTO.&lt;/p&gt;
&lt;p&gt;No questions asked. He just picks up.&lt;br&gt;
At any hour. Which is frankly suspicious.&lt;/p&gt;
&lt;p&gt;If you want to know who he is, here's &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.arunvignesh.my/&quot;&gt;his portfolio&lt;/a&gt;.&lt;br&gt;
He's the reason &quot;stuck&quot; never becomes &quot;stuck forever&quot;.&lt;/p&gt;
&lt;p&gt;The lesson here isn't technical.&lt;br&gt;
Know who you'll call before the crisis, not during it.&lt;/p&gt;
&lt;h3 id=&quot;a-deployment-checklist-i-d-hand-my-past-self&quot;&gt;A deployment checklist I'd hand my past self&lt;/h3&gt;
&lt;p&gt;I'm not going to pretend I have a grand theory.&lt;br&gt;
But here's the checklist that night burned into my brain.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Check the boring stuff first.&lt;/strong&gt; SSL certificates, DNS, environment variables. Then blame the code.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Know when every certificate expires.&lt;/strong&gt; Write the dates down before you touch anything.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Change one big thing at a time.&lt;/strong&gt; Two changes, one failure, endless guessing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deploy when people are awake.&lt;/strong&gt; Ideally the people who can fix it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Know your way back.&lt;/strong&gt; Before you ship, not after.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Watch it after you ship.&lt;/strong&gt; &quot;Deployed&quot; is not the same as &quot;working&quot;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Google's SRE book lists three practices for safer changes.&lt;br&gt;
Progressive rollouts.&lt;br&gt;
Quickly and accurately detecting problems.&lt;br&gt;
Rolling back safely when problems arise.&lt;/p&gt;
&lt;p&gt;That's basically my checklist, written by people with far more sleep.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.rahuldk.in/posts/the-night-i-broke-production/deployment-checklist-notebook.jpg&quot; alt=&quot;A hand ticking items off a deployment checklist in a notebook&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Photo: &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/@jakubzerdzicki&quot;&gt;Jakub Żerdzicki&lt;/a&gt; on &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/photos/hand-checking-off-items-on-a-to-do-list-fXlL5I0IvK0&quot;&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&quot;rollbacks-have-a-way-back&quot;&gt;Rollbacks: have a way back&lt;/h3&gt;
&lt;p&gt;If you can't undo a change quickly, you're not deploying.&lt;br&gt;
You're gambling.&lt;/p&gt;
&lt;p&gt;One classic pattern is &lt;a rel=&quot;nofollow&quot; href=&quot;https://martinfowler.com/bliki/BlueGreenDeployment.html&quot;&gt;blue-green deployment&lt;/a&gt;, as Martin Fowler describes it.&lt;br&gt;
You keep two nearly identical production environments.&lt;br&gt;
One is live. The other gets the new version.&lt;br&gt;
You test the idle one, then switch the router over.&lt;/p&gt;
&lt;p&gt;If it breaks, you switch the router back.&lt;br&gt;
Fowler calls it &quot;a rapid way to rollback&quot;.&lt;/p&gt;
&lt;p&gt;You don't need a fancy setup to steal the idea.&lt;br&gt;
Keep the old config. Keep the old build.&lt;br&gt;
Know the exact command that puts things back.&lt;br&gt;
Practise it once on a calm day.&lt;/p&gt;
&lt;h3 id=&quot;monitoring-and-alerting-find-out-before-your-users-do&quot;&gt;Monitoring and alerting: find out before your users do&lt;/h3&gt;
&lt;p&gt;The worst way to discover an outage is from a user.&lt;br&gt;
The second worst is from a friend asking &quot;is your app down?&quot;&lt;/p&gt;
&lt;p&gt;The Google SRE chapter on &lt;a rel=&quot;nofollow&quot; href=&quot;https://sre.google/sre-book/monitoring-distributed-systems/&quot;&gt;monitoring distributed systems&lt;/a&gt; is a good start.&lt;br&gt;
It names four golden signals: latency, traffic, errors and saturation.&lt;br&gt;
Measure those and page a human when they look wrong.&lt;br&gt;
I'd add one more for small teams: certificate expiry dates.&lt;br&gt;
That gets you decently covered, according to the book.&lt;/p&gt;
&lt;p&gt;It also says something I love: &quot;Every page should be actionable.&quot;&lt;br&gt;
An alert you ignore is just a very expensive ringtone.&lt;/p&gt;
&lt;p&gt;Later, I built a &quot;Pager System&quot; for Track My Academy developers.&lt;br&gt;
It's an internal real-time error and notification system.&lt;br&gt;
The idea is simple: problems should find developers, not wait to be found.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.rahuldk.in/posts/the-night-i-broke-production/monitoring-dashboard-graphs.jpg&quot; alt=&quot;A laptop showing monitoring dashboard graphs for latency and traffic&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Photo: &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/@lukechesser&quot;&gt;Luke Chesser&lt;/a&gt; on &lt;a rel=&quot;nofollow&quot; href=&quot;https://unsplash.com/photos/graphs-of-performance-analytics-on-a-laptop-screen-JKUTrJ4vK00&quot;&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&quot;write-the-postmortem-and-keep-it-blameless&quot;&gt;Write the postmortem, and keep it blameless&lt;/h3&gt;
&lt;p&gt;After the fix, the temptation is to sleep and never speak of it again.&lt;br&gt;
Don't.&lt;/p&gt;
&lt;p&gt;Write an incident postmortem.&lt;br&gt;
Google's chapter on &lt;a rel=&quot;nofollow&quot; href=&quot;https://sre.google/sre-book/postmortem-culture/&quot;&gt;postmortem culture&lt;/a&gt; puts it nicely.&lt;br&gt;
&quot;Writing a postmortem is not punishment.&quot;&lt;br&gt;
It's a learning opportunity for the whole company.&lt;/p&gt;
&lt;p&gt;Their triggers include user-visible downtime and an engineer having to roll back.&lt;br&gt;
A multi-hour outage ticks both boxes with enthusiasm.&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.atlassian.com/incident-management/postmortem&quot;&gt;Atlassian's guide to incident postmortems&lt;/a&gt; is very practical.&lt;br&gt;
It covers a timeline, root cause, impact, metrics and action items.&lt;br&gt;
It suggests a review meeting within 24 to 48 hours of resolution.&lt;br&gt;
Then draft the write-up straight after.&lt;br&gt;
Wait longer and the details evaporate.&lt;/p&gt;
&lt;p&gt;Blameless doesn't mean nobody made a mistake.&lt;br&gt;
It means you fix the system so the next person can't make it.&lt;br&gt;
Even if the next person is, once again, me.&lt;/p&gt;
&lt;h3 id=&quot;was-it-worth-it-&quot;&gt;Was it worth it?&lt;/h3&gt;
&lt;p&gt;Honestly? Yes.&lt;br&gt;
Not the outage. The outage was terrible.&lt;br&gt;
But I learned more in that one night than in a month of tutorials.&lt;/p&gt;
&lt;p&gt;Mistakes are expensive teachers.&lt;br&gt;
They're also very, very memorable.&lt;/p&gt;
&lt;p&gt;I'd still prefer the tutorials, though.&lt;/p&gt;
&lt;h3 id=&quot;faq-7&quot;&gt;FAQ&lt;/h3&gt;
&lt;h4 id=&quot;what-are-the-most-important-production-outage-lessons-for-a-small-team-&quot;&gt;What are the most important production outage lessons for a small team?&lt;/h4&gt;
&lt;p&gt;Change one thing at a time.&lt;br&gt;
Always have a tested way back.&lt;br&gt;
Monitor the basics so you hear about problems before users do.&lt;/p&gt;
&lt;h4 id=&quot;can-an-expired-ssl-certificate-take-down-a-backend-&quot;&gt;Can an expired SSL certificate take down a backend?&lt;/h4&gt;
&lt;p&gt;Yes, and quietly.&lt;br&gt;
Once a certificate passes its expiry date, clients stop trusting the server.&lt;br&gt;
Requests fail, and it can look exactly like a code bug.&lt;/p&gt;
&lt;h4 id=&quot;what-should-go-in-an-incident-postmortem-&quot;&gt;What should go in an incident postmortem?&lt;/h4&gt;
&lt;p&gt;A timeline, the impact, the root cause and clear action items.&lt;br&gt;
Keep it blameless.&lt;br&gt;
Fix the system, not the person.&lt;/p&gt;
&lt;h3 id=&quot;sources-3&quot;&gt;Sources&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://sre.google/sre-book/introduction/&quot;&gt;Google SRE book: Introduction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://sre.google/sre-book/monitoring-distributed-systems/&quot;&gt;Google SRE book: Monitoring distributed systems&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://sre.google/sre-book/postmortem-culture/&quot;&gt;Google SRE book: Postmortem culture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.atlassian.com/incident-management/postmortem&quot;&gt;Atlassian: Incident postmortems&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://martinfowler.com/bliki/BlueGreenDeployment.html&quot;&gt;Martin Fowler: Blue-green deployment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://en.wikipedia.org/wiki/Public_key_certificate&quot;&gt;Wikipedia: Public key certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://letsencrypt.org/docs/faq/&quot;&gt;Let's Encrypt FAQ&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;what-next-3&quot;&gt;What next&lt;/h3&gt;
&lt;p&gt;Curious how the product got built in the first place? Read &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/the-app-that-arrived-from-2006&quot;&gt;the app that arrived from 2006&lt;/a&gt;.&lt;br&gt;
Or how I learned the tools: &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rahuldk.in/blog/dozens-of-email-accounts-and-zero-shame&quot;&gt;dozens of email accounts and zero shame&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Running an academy? &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.trackmyacademy.com&quot;&gt;Track My Academy&lt;/a&gt; handles attendance, fees, player analytics and parent communication.&lt;br&gt;
It's built by &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.trackmytech.in&quot;&gt;TrackMy Tech&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Want to talk shipping, breaking and fixing things? &lt;a rel=&quot;nofollow&quot; href=&quot;https://calendar.rahuldk.in&quot;&gt;Book a call&lt;/a&gt;.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/32504/production-outage-lessons-we-blamed-our-code-it-was-ssl</guid>
<pubDate>Mon, 26 Oct 2026 12:01:40 +0000</pubDate>
</item>
<item>
<title>How a QA Problem Turned Into the SaaS I’m Building</title>
<link>https://coderlegion.com/25761/how-a-qa-problem-turned-into-the-saas-im-building</link>
<description>&lt;p&gt;I didn’t start building Dulvarn because I wanted to become a SaaS founder.&lt;/p&gt;
&lt;p&gt;At least, not at first.&lt;/p&gt;
&lt;p&gt;I started with a problem I kept seeing again and again in software delivery.&lt;/p&gt;
&lt;p&gt;A team could have:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;green CI&lt;/li&gt;
&lt;li&gt;passing tests&lt;/li&gt;
&lt;li&gt;successful builds&lt;/li&gt;
&lt;li&gt;approved pull requests&lt;/li&gt;
&lt;li&gt;deployment steps ready&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And still, one question remained difficult to answer clearly:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Are we actually ready to release?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That question stayed with me.&lt;/p&gt;
&lt;p&gt;Because in theory, software teams already have many signals.&lt;/p&gt;
&lt;p&gt;CI tells us something.&lt;/p&gt;
&lt;p&gt;Automated tests tell us something.&lt;/p&gt;
&lt;p&gt;QA tells us something.&lt;/p&gt;
&lt;p&gt;Security tools tell us something.&lt;/p&gt;
&lt;p&gt;Pull requests tell us something.&lt;/p&gt;
&lt;p&gt;Monitoring tells us something.&lt;/p&gt;
&lt;p&gt;But those signals are often scattered across different tools, dashboards, tickets, reports, and conversations.&lt;/p&gt;
&lt;p&gt;And when it is time to make the final release decision, the answer is not always as clear as the pipeline color suggests.&lt;/p&gt;
&lt;p&gt;That gap is where Dulvarn started.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;green-does-not-always-mean-confident&quot;&gt;Green does not always mean confident&lt;/h3&gt;
&lt;p&gt;One of the ideas I kept coming back to was simple:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;A green pipeline tells you that the checks you defined passed.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That is valuable.&lt;/p&gt;
&lt;p&gt;But it does not automatically tell you that the release risk is low.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Build                     PASS
Automated tests           PASS
Security scan             PASS

Database migration        YES
Authentication change     YES
Rollback confidence       MEDIUM
Observability coverage    PARTIAL
QA coverage               LIMITED
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Nothing here is necessarily red.&lt;/p&gt;
&lt;p&gt;But it also does not feel like a release decision that should be made blindly.&lt;/p&gt;
&lt;p&gt;The build passed.&lt;/p&gt;
&lt;p&gt;The tests passed.&lt;/p&gt;
&lt;p&gt;The scan passed.&lt;/p&gt;
&lt;p&gt;But the release still deserves thought.&lt;/p&gt;
&lt;p&gt;What changed?&lt;/p&gt;
&lt;p&gt;How risky is the change?&lt;/p&gt;
&lt;p&gt;Can we roll it back?&lt;/p&gt;
&lt;p&gt;Do we have enough visibility after deployment?&lt;/p&gt;
&lt;p&gt;Do we understand the weakest part of the release?&lt;/p&gt;
&lt;p&gt;That difference between &lt;strong&gt;technical validation&lt;/strong&gt; and &lt;strong&gt;release confidence&lt;/strong&gt; became more interesting to me over time.&lt;/p&gt;
&lt;p&gt;And once I noticed it, I started seeing it everywhere.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;qa-taught-me-to-ask-uncomfortable-questions&quot;&gt;QA taught me to ask uncomfortable questions&lt;/h3&gt;
&lt;p&gt;Working in QA changes the way you look at software.&lt;/p&gt;
&lt;p&gt;You naturally start asking:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What could fail?&lt;/li&gt;
&lt;li&gt;What was not covered?&lt;/li&gt;
&lt;li&gt;What assumption are we making?&lt;/li&gt;
&lt;li&gt;What happens if the user does something unexpected?&lt;/li&gt;
&lt;li&gt;What changed between environments?&lt;/li&gt;
&lt;li&gt;What evidence do we actually have?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;At first, those questions were mostly about features.&lt;/p&gt;
&lt;p&gt;Does login work?&lt;/p&gt;
&lt;p&gt;Can the user complete checkout?&lt;/p&gt;
&lt;p&gt;Does validation behave correctly?&lt;/p&gt;
&lt;p&gt;Does the API return the expected response?&lt;/p&gt;
&lt;p&gt;But as I moved deeper into automation, CI/CD, DevOps, observability, and release engineering, the questions became broader.&lt;/p&gt;
&lt;p&gt;I started asking:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;What happens if the deployment succeeds, but the system becomes unhealthy?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;p&gt;What if the tests pass, but rollback is unclear?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;p&gt;What if the release includes a risky migration?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;p&gt;What if different teams each have part of the evidence, but nobody has the whole picture?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;At that point, the problem was no longer only testing.&lt;/p&gt;
&lt;p&gt;It was release decision-making.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;release-readiness-is-often-spread-across-too-many-places&quot;&gt;Release readiness is often spread across too many places&lt;/h3&gt;
&lt;p&gt;In many teams, release evidence is not missing.&lt;/p&gt;
&lt;p&gt;It is fragmented.&lt;/p&gt;
&lt;p&gt;One signal lives in CI.&lt;/p&gt;
&lt;p&gt;Another lives in test reports.&lt;/p&gt;
&lt;p&gt;Security findings live somewhere else.&lt;/p&gt;
&lt;p&gt;Deployment status is in another system.&lt;/p&gt;
&lt;p&gt;Approvals may be in a ticket.&lt;/p&gt;
&lt;p&gt;Important context may be in Slack.&lt;/p&gt;
&lt;p&gt;Risk may be understood by one engineer, but not written down anywhere.&lt;/p&gt;
&lt;p&gt;And then someone has to decide whether the release should go out.&lt;/p&gt;
&lt;p&gt;That decision can become strangely informal compared to everything that came before it.&lt;/p&gt;
&lt;p&gt;Code review is structured.&lt;/p&gt;
&lt;p&gt;CI is structured.&lt;/p&gt;
&lt;p&gt;Testing is structured.&lt;/p&gt;
&lt;p&gt;Deployment is often structured.&lt;/p&gt;
&lt;p&gt;But the release decision itself can still depend on scattered context and human memory.&lt;/p&gt;
&lt;p&gt;That bothered me.&lt;/p&gt;
&lt;p&gt;Not because people were careless.&lt;/p&gt;
&lt;p&gt;But because the tools around them were usually optimized for execution.&lt;/p&gt;
&lt;p&gt;Build.&lt;/p&gt;
&lt;p&gt;Test.&lt;/p&gt;
&lt;p&gt;Deploy.&lt;/p&gt;
&lt;p&gt;They were less focused on the decision between those steps.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;dulvarn-started-as-a-release-control-idea&quot;&gt;Dulvarn started as a release control idea&lt;/h3&gt;
&lt;p&gt;The idea behind Dulvarn came from that gap.&lt;/p&gt;
&lt;p&gt;I wanted to explore a simple question:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;What if release decisions were based on collected evidence instead of scattered signals and assumptions?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Not to replace CI.&lt;/p&gt;
&lt;p&gt;Not to replace QA.&lt;/p&gt;
&lt;p&gt;Not to replace DevOps.&lt;/p&gt;
&lt;p&gt;And definitely not to replace people.&lt;/p&gt;
&lt;p&gt;The point is not to make software delivery fully automatic and hope for the best.&lt;/p&gt;
&lt;p&gt;The point is to make release risk more visible.&lt;/p&gt;
&lt;p&gt;Something like:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;CI
QA
Security
Change Context
Deployment Readiness
Operational Signals
Approvals
        ↓
Release Evidence
        ↓
Risk Context
        ↓
GO / CONDITIONAL GO / NO-GO
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The label matters less than the explanation behind it.&lt;/p&gt;
&lt;p&gt;A good release decision should not only say:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;GO
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It should also explain why.&lt;/p&gt;
&lt;p&gt;And if the answer is:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;CONDITIONAL GO
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then the team should understand the condition.&lt;/p&gt;
&lt;p&gt;And if the answer is:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;NO-GO
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then the reason should be clear enough to act on.&lt;/p&gt;
&lt;p&gt;That is the direction I started building toward.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;i-am-not-trying-to-build-another-giant-platform&quot;&gt;I am not trying to build another giant platform&lt;/h3&gt;
&lt;p&gt;One thing I care about is keeping the core idea clear.&lt;/p&gt;
&lt;p&gt;Software teams already have enough tools.&lt;/p&gt;
&lt;p&gt;They do not need another huge platform that tries to replace everything they use.&lt;/p&gt;
&lt;p&gt;The interesting part is the layer between existing systems.&lt;/p&gt;
&lt;p&gt;Collect the signals.&lt;/p&gt;
&lt;p&gt;Understand the context.&lt;/p&gt;
&lt;p&gt;Evaluate the risk.&lt;/p&gt;
&lt;p&gt;Make the decision visible.&lt;/p&gt;
&lt;p&gt;Keep the evidence.&lt;/p&gt;
&lt;p&gt;That is the part I keep coming back to.&lt;/p&gt;
&lt;p&gt;Dulvarn is not meant to be a magical AI system that takes control away from teams.&lt;/p&gt;
&lt;p&gt;It is meant to support human-controlled release decisions.&lt;/p&gt;
&lt;p&gt;The software can help organize evidence.&lt;/p&gt;
&lt;p&gt;It can highlight risk.&lt;/p&gt;
&lt;p&gt;It can make patterns easier to see.&lt;/p&gt;
&lt;p&gt;It can preserve decision history.&lt;/p&gt;
&lt;p&gt;But the responsibility still belongs with people.&lt;/p&gt;
&lt;p&gt;That matters to me.&lt;/p&gt;
&lt;p&gt;Especially because release decisions are not only technical.&lt;/p&gt;
&lt;p&gt;They involve judgment.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;building-the-idea-was-easier-than-defining-the-product&quot;&gt;Building the idea was easier than defining the product&lt;/h3&gt;
&lt;p&gt;This was one of the first lessons I learned.&lt;/p&gt;
&lt;p&gt;Writing code is only one part of building a SaaS.&lt;/p&gt;
&lt;p&gt;You also need to answer questions like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Who exactly is this for?&lt;/li&gt;
&lt;li&gt;Which problem is painful enough to solve?&lt;/li&gt;
&lt;li&gt;What belongs in the MVP?&lt;/li&gt;
&lt;li&gt;What should not be built yet?&lt;/li&gt;
&lt;li&gt;How should onboarding work?&lt;/li&gt;
&lt;li&gt;What should users see first?&lt;/li&gt;
&lt;li&gt;What should remain manual?&lt;/li&gt;
&lt;li&gt;What should be automated?&lt;/li&gt;
&lt;li&gt;What is useful now, and what is just interesting?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Those questions are often harder than building another endpoint or UI component.&lt;/p&gt;
&lt;p&gt;And they do not have clean pass/fail answers.&lt;/p&gt;
&lt;p&gt;As a QA engineer, I was used to looking for defects.&lt;/p&gt;
&lt;p&gt;As a product builder, I had to start looking for unnecessary complexity too.&lt;/p&gt;
&lt;p&gt;That is a different skill.&lt;/p&gt;
&lt;p&gt;And I am still learning it.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;the-temptation-to-build-too-much-is-real&quot;&gt;The temptation to build too much is real&lt;/h3&gt;
&lt;p&gt;When you build your own product, every idea feels useful.&lt;/p&gt;
&lt;p&gt;Add another integration.&lt;/p&gt;
&lt;p&gt;Add another dashboard.&lt;/p&gt;
&lt;p&gt;Add another AI feature.&lt;/p&gt;
&lt;p&gt;Add another report.&lt;/p&gt;
&lt;p&gt;Add another workflow.&lt;/p&gt;
&lt;p&gt;Add more settings.&lt;/p&gt;
&lt;p&gt;Add more intelligence.&lt;/p&gt;
&lt;p&gt;The product can become impressive very quickly.&lt;/p&gt;
&lt;p&gt;It can also become impossible to understand.&lt;/p&gt;
&lt;p&gt;I had to learn that a technically strong feature is not automatically a product priority.&lt;/p&gt;
&lt;p&gt;Sometimes the better decision is:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Not yet.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That is surprisingly difficult when you are the person imagining the system and building it at the same time.&lt;/p&gt;
&lt;p&gt;Because you can see the future version in your head.&lt;/p&gt;
&lt;p&gt;But users do not start with the future version.&lt;/p&gt;
&lt;p&gt;They start with the first useful version.&lt;/p&gt;
&lt;p&gt;And that version has to be clear.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;building-while-working-full-time-changes-everything&quot;&gt;Building while working full-time changes everything&lt;/h3&gt;
&lt;p&gt;There is another reality behind Dulvarn.&lt;/p&gt;
&lt;p&gt;I am building it while working a full-time job.&lt;/p&gt;
&lt;p&gt;That means time matters.&lt;/p&gt;
&lt;p&gt;Energy matters.&lt;/p&gt;
&lt;p&gt;Focus matters.&lt;/p&gt;
&lt;p&gt;You cannot treat every idea like an emergency.&lt;/p&gt;
&lt;p&gt;You cannot spend weeks polishing something nobody has asked for.&lt;/p&gt;
&lt;p&gt;You cannot rebuild the architecture every time a more elegant solution appears.&lt;/p&gt;
&lt;p&gt;At least, not if you want to ship something.&lt;/p&gt;
&lt;p&gt;This has forced me to think much more seriously about priorities.&lt;/p&gt;
&lt;p&gt;What moves the product forward?&lt;/p&gt;
&lt;p&gt;What creates evidence that the idea is useful?&lt;/p&gt;
&lt;p&gt;What helps me get closer to real users?&lt;/p&gt;
&lt;p&gt;What is just interesting engineering?&lt;/p&gt;
&lt;p&gt;Those are different things.&lt;/p&gt;
&lt;p&gt;And as a technical founder, it is very easy to confuse them.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;building-dulvarn-changed-the-way-i-think-about-qa&quot;&gt;Building Dulvarn changed the way I think about QA&lt;/h3&gt;
&lt;p&gt;Interestingly, building a SaaS has also made me think differently about QA.&lt;/p&gt;
&lt;p&gt;When you own the whole product, quality becomes much bigger than testing.&lt;/p&gt;
&lt;p&gt;A confusing onboarding step matters.&lt;/p&gt;
&lt;p&gt;A broken deployment matters.&lt;/p&gt;
&lt;p&gt;A slow page matters.&lt;/p&gt;
&lt;p&gt;A missing error message matters.&lt;/p&gt;
&lt;p&gt;Security matters.&lt;/p&gt;
&lt;p&gt;Observability matters.&lt;/p&gt;
&lt;p&gt;Documentation matters.&lt;/p&gt;
&lt;p&gt;Support experience matters.&lt;/p&gt;
&lt;p&gt;Pricing clarity matters.&lt;/p&gt;
&lt;p&gt;The product is not only the code.&lt;/p&gt;
&lt;p&gt;The product is the whole experience around the code.&lt;/p&gt;
&lt;p&gt;That perspective feeds back into how I think about software quality in general.&lt;/p&gt;
&lt;p&gt;Quality does not start when testing begins.&lt;/p&gt;
&lt;p&gt;And it does not end when QA says passed.&lt;/p&gt;
&lt;p&gt;It exists across the full lifecycle of the product.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;this-is-still-early&quot;&gt;This is still early&lt;/h3&gt;
&lt;p&gt;Dulvarn is not a finished story.&lt;/p&gt;
&lt;p&gt;It is still early.&lt;/p&gt;
&lt;p&gt;There are things I will probably change.&lt;/p&gt;
&lt;p&gt;Features I will remove.&lt;/p&gt;
&lt;p&gt;Assumptions I will test.&lt;/p&gt;
&lt;p&gt;Positioning I will sharpen.&lt;/p&gt;
&lt;p&gt;Workflows I will simplify.&lt;/p&gt;
&lt;p&gt;Technical decisions I will rethink.&lt;/p&gt;
&lt;p&gt;That is part of the process.&lt;/p&gt;
&lt;p&gt;I do not want to write this series as if I already have everything figured out.&lt;/p&gt;
&lt;p&gt;I do not.&lt;/p&gt;
&lt;p&gt;I am building, learning, cutting scope, testing ideas, and trying to turn a real QA and release engineering problem into something useful.&lt;/p&gt;
&lt;p&gt;That is exactly why I want to document it.&lt;/p&gt;
&lt;p&gt;Not as a perfect founder story.&lt;/p&gt;
&lt;p&gt;More as a record of what I am learning while building.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;what-i-want-to-share-in-this-series&quot;&gt;What I want to share in this series&lt;/h3&gt;
&lt;p&gt;In this series, I want to write about the real process behind building Dulvarn.&lt;/p&gt;
&lt;p&gt;Things like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;how I decide what belongs in the MVP&lt;/li&gt;
&lt;li&gt;how I think about release risk&lt;/li&gt;
&lt;li&gt;what I learn from user feedback&lt;/li&gt;
&lt;li&gt;how I approach onboarding&lt;/li&gt;
&lt;li&gt;how I avoid building too much&lt;/li&gt;
&lt;li&gt;how I think about pricing&lt;/li&gt;
&lt;li&gt;how I balance AI with human control&lt;/li&gt;
&lt;li&gt;how I work on infrastructure&lt;/li&gt;
&lt;li&gt;how I manage product decisions while working full-time&lt;/li&gt;
&lt;li&gt;what I build and later remove&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Not as a tutorial for building the perfect SaaS.&lt;/p&gt;
&lt;p&gt;I definitely do not have that.&lt;/p&gt;
&lt;p&gt;More as a practical founder log from someone trying to build a product from a problem he understands deeply.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Dulvarn did not start because I wanted to become a SaaS founder.&lt;/p&gt;
&lt;p&gt;It started because QA kept leading me toward bigger questions.&lt;/p&gt;
&lt;p&gt;Testing led to automation.&lt;/p&gt;
&lt;p&gt;Automation led to CI/CD.&lt;/p&gt;
&lt;p&gt;CI/CD led to DevOps.&lt;/p&gt;
&lt;p&gt;DevOps led to release engineering.&lt;/p&gt;
&lt;p&gt;And release engineering led to one question I could not stop thinking about:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;If all our systems produce signals, who actually turns those signals into a release decision?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I am still working on the answer.&lt;/p&gt;
&lt;p&gt;And I am building a product around it.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;This is the first article in my &lt;strong&gt;How I’m Building a SaaS&lt;/strong&gt; series.&lt;/p&gt;
&lt;p&gt;In the next article, I want to write about one of the hardest lessons so far:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;how to decide what not to build.&lt;/strong&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/25761/how-a-qa-problem-turned-into-the-saas-im-building</guid>
<pubDate>Sat, 29 Aug 2026 14:19:38 +0000</pubDate>
</item>
<item>
<title>Is Your Business Invisible on AI Search?</title>
<link>https://coderlegion.com/24392/is-your-business-invisible-on-ai-search</link>
<description>&lt;p&gt;A business can have a good website, good reviews, and even strong Google rankings and still be almost invisible when someone asks ChatGPT or Gemini:&lt;/p&gt;
&lt;p&gt;“What’s the best [service] in [city]?”&lt;/p&gt;
&lt;p&gt;I recently looked into this problem and found that some businesses simply weren't being mentioned when AI tools were asked to recommend companies in their area.&lt;/p&gt;
&lt;p&gt;The interesting part? Being visible on Google doesn't automatically mean you'll be visible in AI search.&lt;/p&gt;
&lt;p&gt;I worked on improving the signals and information that AI search systems use to understand and recommend a business.&lt;/p&gt;
&lt;p&gt;After making the changes, the business became much more visible in relevant AI searches.&lt;/p&gt;
&lt;p&gt;AI search is changing how people discover businesses. If you're not checking how your company appears on ChatGPT, Gemini, and other AI search tools, you may not even know what you're missing.&lt;/p&gt;
&lt;p&gt;Curious about how your business appears? Feel free to reach out.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/24392/is-your-business-invisible-on-ai-search</guid>
<pubDate>Mon, 10 Aug 2026 11:26:03 +0000</pubDate>
</item>
</channel>
</rss>