<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Rahul Dhileep Kumar</title>
    <description>The latest articles on DEV Community by Rahul Dhileep Kumar (@rahul_dk).</description>
    <link>https://dev.to/rahul_dk</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3861987%2Fcd208161-282e-40f4-ae10-995bc03ae6b1.jpg</url>
      <title>DEV Community: Rahul Dhileep Kumar</title>
      <link>https://dev.to/rahul_dk</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rahul_dk"/>
    <language>en</language>
    <item>
      <title>My developer desk setup: three monitors, one Monster can</title>
      <dc:creator>Rahul Dhileep Kumar</dc:creator>
      <pubDate>Wed, 04 Nov 2026 04:30:00 +0000</pubDate>
      <link>https://dev.to/rahul_dk/my-developer-desk-setup-three-monitors-one-monster-can-37me</link>
      <guid>https://dev.to/rahul_dk/my-developer-desk-setup-three-monitors-one-monster-can-37me</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7a5u2rfpu7whelxdtmrx.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7a5u2rfpu7whelxdtmrx.webp" alt="Rahul at his desk, giving a thumbs up with an energy drink" width="800" height="1067"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.rahuldk.in" rel="noopener noreferrer"&gt;My website&lt;/a&gt; says it right at the top.&lt;br&gt;
Three monitors. One Monster can. Zero hours of sleep.&lt;br&gt;
People think it's a joke.&lt;/p&gt;

&lt;p&gt;It's not a joke.&lt;br&gt;
It's a description.&lt;/p&gt;

&lt;p&gt;So here's a proper tour of my developer desk setup.&lt;br&gt;
What's on it, what actually helps, and what's just a bad habit with good lighting.&lt;br&gt;
I've also looked up what the research says.&lt;br&gt;
Because "trust me" is not a source.&lt;/p&gt;

&lt;h2&gt;
  
  
  My developer desk setup, in one sentence
&lt;/h2&gt;

&lt;p&gt;Three monitors, sticky notes, AI coding tools and an alarming number of cans.&lt;/p&gt;

&lt;p&gt;That's it.&lt;br&gt;
No standing desk.&lt;br&gt;
No mechanical keyboard review.&lt;br&gt;
No mood lighting sponsored by anyone.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fct6juzj6iq2luhpnu9vu.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fct6juzj6iq2luhpnu9vu.webp" alt="Rahul's desk at night: three monitors, a laptop, sticky notes and a wall of Monster cans" width="800" height="1422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's the same desk you'll find on my home page.&lt;br&gt;
Tidier in the photo than in real life, probably.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three monitors, and what the research says
&lt;/h2&gt;

&lt;p&gt;Yes, three.&lt;br&gt;
Do I need three monitors?&lt;br&gt;
Need is a strong word.&lt;/p&gt;

&lt;p&gt;One for code.&lt;br&gt;
One for the app I'm breaking.&lt;br&gt;
One for everything else that's on fire.&lt;/p&gt;

&lt;p&gt;Once you get used to three, two feels like a punishment.&lt;br&gt;
One feels like a crime.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fefa6l4mq3wlrcf7tat7x.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fefa6l4mq3wlrcf7tat7x.webp" alt="A developer coding at night in front of a three-monitor desk setup" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo: &lt;a href="https://unsplash.com/@abusaeid01" rel="noopener noreferrer"&gt;Abu Saeid&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/a-man-sitting-in-front-of-three-computer-monitors-fdGTi4IcaJc" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Is multi-monitor productivity real, or just a nice excuse?&lt;br&gt;
There's some actual research.&lt;/p&gt;

&lt;p&gt;A &lt;a href="https://www.computerworld.com/article/1564307/bigger-is-better-in-monitors-to-a-point.html" rel="noopener noreferrer"&gt;University of Utah study reported by Computerworld&lt;/a&gt; timed people doing editing tasks.&lt;br&gt;
Two 20-inch screens beat a single 18-inch screen by 44% on text editing.&lt;br&gt;
On spreadsheet work, the gain was 29%.&lt;/p&gt;

&lt;p&gt;Two honest caveats.&lt;br&gt;
The study was paid for by NEC, a company that sells monitors.&lt;br&gt;
Surprise, the monitor company liked monitors.&lt;/p&gt;

&lt;p&gt;The other caveat is more interesting.&lt;br&gt;
Gains levelled off as screens got bigger.&lt;br&gt;
On the largest screen, spreadsheet performance actually dropped.&lt;br&gt;
The researcher blamed time spent managing windows.&lt;/p&gt;

&lt;p&gt;That matches my theory completely.&lt;br&gt;
More screen helps until you start losing things on it.&lt;br&gt;
I'm at three.&lt;br&gt;
I'm not going to four.&lt;br&gt;
Probably.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sticky notes: the cheapest task system that works
&lt;/h2&gt;

&lt;p&gt;My most important productivity tool costs almost nothing.&lt;br&gt;
Sticky notes.&lt;/p&gt;

&lt;p&gt;Ideas.&lt;br&gt;
Bugs.&lt;br&gt;
Things I promised someone.&lt;br&gt;
Things I'll definitely forget by tomorrow.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2cif84uyx6o7dglg4nvo.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2cif84uyx6o7dglg4nvo.webp" alt="A whiteboard covered in orange and blue sticky notes arranged as a simple kanban task board" width="800" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo: &lt;a href="https://unsplash.com/@paymo" rel="noopener noreferrer"&gt;Paymo&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/a-wall-with-several-sticky-notes-attached-to-it-AmhxmYXwbZM" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If you want the grown-up version, it's called a &lt;a href="https://en.wikipedia.org/wiki/Kanban_board" rel="noopener noreferrer"&gt;kanban board&lt;/a&gt;.&lt;br&gt;
Work moves through columns as it progresses.&lt;br&gt;
The simplest version has three: to-do, doing, done.&lt;/p&gt;

&lt;p&gt;Here's how I'd set up a simple task system with sticky notes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;One task per note.&lt;/strong&gt; If it needs two notes, it's two tasks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write the verb first.&lt;/strong&gt; "Fix login bug", not "login stuff".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Three columns, max.&lt;/strong&gt; To-do, doing, done. Nothing fancier.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Limit "doing".&lt;/strong&gt; Three notes, tops. Same rule as the monitors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bin the done notes.&lt;/strong&gt; Throwing them away is the best part.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Sticky notes have one flaw.&lt;br&gt;
Past you writes them.&lt;br&gt;
Past you has terrible handwriting and zero context.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI coding tools on the screens
&lt;/h2&gt;

&lt;p&gt;It started small.&lt;br&gt;
A MacBook Air, VS Code and ChatGPT.&lt;/p&gt;

&lt;p&gt;That was the first night of building Track My Academy.&lt;br&gt;
I wrote about it in &lt;a href="https://www.rahuldk.in/blog/the-app-that-arrived-from-2006" rel="noopener noreferrer"&gt;the app that arrived from 2006&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Then we went a bit feral.&lt;br&gt;
We chased every free AI trial we could find, across dozens of email accounts.&lt;br&gt;
The full confession is in &lt;a href="https://www.rahuldk.in/blog/dozens-of-email-accounts-and-zero-shame" rel="noopener noreferrer"&gt;dozens of email accounts and zero shame&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Back then we didn't know how to use Claude or Codex properly.&lt;br&gt;
That took a while.&lt;br&gt;
Here's the short version of what these tools are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;VS Code&lt;/a&gt;&lt;/strong&gt; calls itself "the open source AI code editor". It was there on night one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://code.claude.com/docs/en/overview" rel="noopener noreferrer"&gt;Claude Code&lt;/a&gt;&lt;/strong&gt; is an agentic coding tool that reads your codebase and edits files.&lt;/li&gt;
&lt;li&gt;It runs in the terminal, IDEs, a desktop app and the browser.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/openai/codex" rel="noopener noreferrer"&gt;Codex CLI&lt;/a&gt;&lt;/strong&gt; is OpenAI's coding agent that runs locally on your computer.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They write code quickly.&lt;br&gt;
I still decide what's right.&lt;/p&gt;

&lt;p&gt;That's the deal.&lt;br&gt;
AI is very fast help, not a replacement for knowing what you want.&lt;br&gt;
Bugs still have my name on them, AI or not.&lt;br&gt;
I learned ownership the hard way in &lt;a href="https://www.rahuldk.in/blog/the-night-i-broke-production" rel="noopener noreferrer"&gt;the night I broke production&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The offline coding agent experiment
&lt;/h2&gt;

&lt;p&gt;Using these tools made me curious about building one.&lt;/p&gt;

&lt;p&gt;So I built a personal offline coding agent, as an experiment.&lt;br&gt;
It was inspired by Claude Code and Bolt.&lt;br&gt;
The stack was Electron, React, &lt;a href="https://ollama.com" rel="noopener noreferrer"&gt;Ollama&lt;/a&gt; and the Monaco editor.&lt;/p&gt;

&lt;p&gt;Ollama lets you run open models on your own machine.&lt;br&gt;
The &lt;a href="https://github.com/microsoft/monaco-editor" rel="noopener noreferrer"&gt;Monaco Editor&lt;/a&gt; is the code editor from VS Code, packaged for the browser.&lt;/p&gt;

&lt;p&gt;The goal was to explore contextual memory limits.&lt;br&gt;
In plain English: how much can a local model remember before it gets confused?&lt;br&gt;
A fair question for a model.&lt;br&gt;
An unfair one for me at 3 a.m.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Monster cans
&lt;/h2&gt;

&lt;p&gt;Let's address the can in the room.&lt;/p&gt;

&lt;p&gt;There are a lot of Monster cans.&lt;br&gt;
Enough to make a wall.&lt;br&gt;
You can see it in the photo above.&lt;/p&gt;

&lt;p&gt;At the office, they went one step further.&lt;br&gt;
There's a chandelier made of Monster cans.&lt;br&gt;
I'm not proud of it.&lt;br&gt;
Okay, I'm a little proud of it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl52gmz88jw77jtorg7gu.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl52gmz88jw77jtorg7gu.webp" alt="Rahul giving two thumbs up at the TrackMy Tech office, under a chandelier made of Monster cans" width="800" height="1067"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's it above my head.&lt;br&gt;
Yes, it looks like a rifle.&lt;br&gt;
No, I can't explain the design process.&lt;/p&gt;

&lt;p&gt;Is this healthy?&lt;br&gt;
No.&lt;br&gt;
Am I going to pretend I drink green tea?&lt;br&gt;
Also no.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frkinegykhc1ltm0gk9bc.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frkinegykhc1ltm0gk9bc.webp" alt="A cup of coffee next to a computer keyboard on a wooden desk" width="800" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo: &lt;a href="https://unsplash.com/@amr_taha" rel="noopener noreferrer"&gt;Amr Taha&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/a-cup-of-coffee-next-to-a-computer-keyboard-YJv9MGGQks8" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I'm not a doctor, so I'll just point at people who know.&lt;br&gt;
The &lt;a href="https://www.fda.gov/consumers/consumer-updates/spilling-beans-how-much-caffeine-too-much" rel="noopener noreferrer"&gt;US FDA says&lt;/a&gt; about 400 mg a day is generally fine for healthy adults.&lt;br&gt;
It also says energy drinks vary a lot in caffeine.&lt;br&gt;
Read the label before you trust the can.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://www.sleepfoundation.org/nutrition/caffeine-and-sleep" rel="noopener noreferrer"&gt;Sleep Foundation on caffeine and sleep&lt;/a&gt; is blunter.&lt;br&gt;
Its usual advice is no caffeine for at least eight hours before bed.&lt;br&gt;
Caffeine's half-life can be anywhere from two to twelve hours.&lt;br&gt;
So that evening can is still at your desk at midnight.&lt;br&gt;
Even after you've thrown it away.&lt;/p&gt;

&lt;p&gt;Kids, please drink water.&lt;/p&gt;

&lt;h2&gt;
  
  
  Zero hours of sleep
&lt;/h2&gt;

&lt;p&gt;This one is a slight exaggeration.&lt;br&gt;
Slight.&lt;/p&gt;

&lt;p&gt;Between college, the company and everything else, sleep loses.&lt;br&gt;
It always loses.&lt;br&gt;
It never wins a single argument.&lt;br&gt;
The exam-season version of this is in &lt;a href="https://www.rahuldk.in/blog/exams-the-office-and-a-1am-gate" rel="noopener noreferrer"&gt;exams, the office and a 1 a.m. gate&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For the record, the &lt;a href="https://www.sleepfoundation.org/how-sleep-works/how-much-sleep-do-we-really-need" rel="noopener noreferrer"&gt;Sleep Foundation says&lt;/a&gt; adults need at least seven hours.&lt;br&gt;
I'm telling you how it is for me, not how it should be.&lt;br&gt;
Please copy the Sleep Foundation, not me.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually matters in a developer desk setup
&lt;/h2&gt;

&lt;p&gt;Here's my unpopular opinion.&lt;/p&gt;

&lt;p&gt;Your setup doesn't make you productive.&lt;br&gt;
Your problem does.&lt;/p&gt;

&lt;p&gt;I built my first landing page on a MacBook Air.&lt;br&gt;
No second monitor.&lt;br&gt;
No fancy chair.&lt;/p&gt;

&lt;p&gt;The monitors came later.&lt;br&gt;
The Monster cans came, unfortunately, immediately.&lt;/p&gt;

&lt;p&gt;If you're building a desk from scratch, here's my order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;A decent editor and an AI coding tool.&lt;/strong&gt; Both have free starting points.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A second screen.&lt;/strong&gt; The research backs this one, with a vendor-shaped asterisk.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A sticky-note system.&lt;/strong&gt; Cheap, physical, impossible to close by accident.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A third screen.&lt;/strong&gt; Only if two genuinely slows you down.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sleep.&lt;/strong&gt; I've put it last because that's where I put it. Don't.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Start with what you have.&lt;br&gt;
Upgrade when the setup is actually slowing you down.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Are three monitors better than two for programming?
&lt;/h3&gt;

&lt;p&gt;Two screens clearly help, according to the University of Utah study.&lt;br&gt;
Beyond that, gains flatten and window juggling creeps in.&lt;br&gt;
Three works for me because each screen has one job.&lt;br&gt;
If you can't name the third screen's job, skip it.&lt;/p&gt;

&lt;h3&gt;
  
  
  What AI coding tools do developers use in 2026?
&lt;/h3&gt;

&lt;p&gt;The big names are Claude Code, Codex and the AI features in VS Code.&lt;br&gt;
They all read code, write code and run commands to different degrees.&lt;br&gt;
Try a couple on a real project, not a demo.&lt;br&gt;
Then keep the one you actually reach for.&lt;/p&gt;

&lt;h3&gt;
  
  
  How much caffeine is too much for late-night coding?
&lt;/h3&gt;

&lt;p&gt;I'm the wrong person to ask, as the cans prove.&lt;br&gt;
The FDA's general figure for healthy adults is about 400 mg a day.&lt;br&gt;
The Sleep Foundation suggests stopping eight hours before bed.&lt;br&gt;
If you have any health questions, ask a doctor, not a blog.&lt;/p&gt;

&lt;h2&gt;
  
  
  Come and see it in use
&lt;/h2&gt;

&lt;p&gt;I build for &lt;a href="https://www.trackmytech.in" rel="noopener noreferrer"&gt;TrackMy Tech&lt;/a&gt;, the sports-tech company I help run.&lt;br&gt;
Its main product is &lt;a href="https://www.trackmyacademy.com" rel="noopener noreferrer"&gt;Track My Academy&lt;/a&gt;, a sports academy management app.&lt;/p&gt;

&lt;p&gt;Want to talk tools, setups or startups?&lt;br&gt;
&lt;a href="https://calendar.rahuldk.in" rel="noopener noreferrer"&gt;Book a call with me&lt;/a&gt;.&lt;br&gt;
I'll be at the desk.&lt;br&gt;
Obviously.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>programming</category>
      <category>ai</category>
      <category>devjournal</category>
    </item>
    <item>
      <title>Dozens of email accounts: learning AI coding tools as a student</title>
      <dc:creator>Rahul Dhileep Kumar</dc:creator>
      <pubDate>Wed, 28 Oct 2026 04:30:00 +0000</pubDate>
      <link>https://dev.to/rahul_dk/dozens-of-email-accounts-learning-ai-coding-tools-as-a-student-5dgd</link>
      <guid>https://dev.to/rahul_dk/dozens-of-email-accounts-learning-ai-coding-tools-as-a-student-5dgd</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F85un9v3srqskb9l6uocj.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F85un9v3srqskb9l6uocj.webp" alt="Rahul's desk at night: three monitors, a laptop, sticky notes and a wall of Monster cans" width="800" height="1422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let me confess something.&lt;br&gt;
Early on, we had dozens of email accounts.&lt;br&gt;
Not for spam. Not for anything shady.&lt;br&gt;
For free AI trials.&lt;/p&gt;

&lt;p&gt;This post is about learning AI coding tools as a student.&lt;br&gt;
No budget. No clue. Lots of inboxes.&lt;br&gt;
It's also about what that chaos actually taught me.&lt;br&gt;
Spoiler: the lesson is not "make fifty email accounts".&lt;/p&gt;

&lt;h2&gt;
  
  
  The great free trial hunt
&lt;/h2&gt;

&lt;p&gt;Here's what our learning strategy looked like.&lt;/p&gt;

&lt;p&gt;Find an AI tool.&lt;br&gt;
Sign up for the free trial.&lt;br&gt;
Use it until the trial ends.&lt;br&gt;
Make a new email.&lt;br&gt;
Repeat.&lt;/p&gt;

&lt;p&gt;When we ran out of our own accounts, a few friends lent us theirs.&lt;/p&gt;

&lt;p&gt;My friends were very generous.&lt;br&gt;
Possibly too generous.&lt;/p&gt;

&lt;p&gt;It was less elegant than it sounds.&lt;br&gt;
It worked.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqmw58uq7pmagfn6j67gj.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqmw58uq7pmagfn6j67gj.webp" alt="A student coding on a laptop late at night while learning AI coding tools" width="800" height="666"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo: &lt;a href="https://unsplash.com/@rc820" rel="noopener noreferrer"&gt;Chirayu Trivedi&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/a-person-is-coding-on-a-laptop-at-night-M1yPeeHZ08w" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why we did it
&lt;/h2&gt;

&lt;p&gt;The honest reason is simple.&lt;/p&gt;

&lt;p&gt;We didn't know how to use Claude or Codex yet.&lt;br&gt;
We didn't know which tool was good at what.&lt;br&gt;
We definitely didn't have money for every subscription.&lt;br&gt;
And even if we had, I wouldn't have spent it. More on that later.&lt;/p&gt;

&lt;p&gt;So we tested everything.&lt;/p&gt;

&lt;p&gt;Some tools were brilliant.&lt;br&gt;
Some were brilliant at sounding brilliant.&lt;br&gt;
A few were just autocomplete with a marketing budget.&lt;/p&gt;

&lt;p&gt;You only learn the difference by using them.&lt;/p&gt;

&lt;p&gt;We were hardly the only curious ones.&lt;br&gt;
The &lt;a href="https://survey.stackoverflow.co/2025/ai" rel="noopener noreferrer"&gt;Stack Overflow 2025 Developer Survey&lt;/a&gt; asked developers about AI.&lt;br&gt;
84% said they use or plan to use AI tools.&lt;br&gt;
Only 33% said they trust the accuracy of those tools.&lt;br&gt;
46% said they actively distrust it.&lt;/p&gt;

&lt;p&gt;So nearly everyone uses them, and plenty don't trust them.&lt;br&gt;
That gap is the whole story of learning these tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  I learn by touching things
&lt;/h2&gt;

&lt;p&gt;This is how my brain works.&lt;/p&gt;

&lt;p&gt;I don't read the manual first.&lt;br&gt;
I touch the thing until it makes sense.&lt;br&gt;
I do it badly first, on purpose or otherwise.&lt;/p&gt;

&lt;p&gt;Sometimes the thing breaks.&lt;br&gt;
Sometimes I break.&lt;br&gt;
Usually, by the end, I understand it.&lt;/p&gt;

&lt;p&gt;Nothing about my path was planned, by the way.&lt;br&gt;
I was a bio-maths student in class 12, then &lt;a href="https://www.rahuldk.in/blog/bio-maths-to-computer-science" rel="noopener noreferrer"&gt;ended up in computer science&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Free trials suited a brain like mine.&lt;br&gt;
Low cost. High chaos. Fast learning.&lt;/p&gt;

&lt;p&gt;The first night of building &lt;a href="https://www.trackmyacademy.com" rel="noopener noreferrer"&gt;Track My Academy&lt;/a&gt; had the same energy.&lt;br&gt;
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;Why I was building it myself at all is its own saga.&lt;br&gt;
That's in &lt;a href="https://www.rahuldk.in/blog/the-app-that-arrived-from-2006" rel="noopener noreferrer"&gt;the app that arrived from 2006&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to evaluate AI coding assistants without fifty inboxes
&lt;/h2&gt;

&lt;p&gt;Here's the version I'd hand to a student today.&lt;/p&gt;

&lt;p&gt;Give every tool the same small, real task.&lt;br&gt;
Not "build me Instagram".&lt;br&gt;
Something like a form, a bug fix, or one API route.&lt;/p&gt;

&lt;p&gt;Then check these things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Does it read your code?&lt;/strong&gt; Some tools guess. Guessing is expensive.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Does it explain itself?&lt;/strong&gt; If you can't follow the change, you can't own it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Does it admit doubt?&lt;/strong&gt; Confident nonsense is the worst kind of nonsense.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What happens when it's wrong?&lt;/strong&gt; Paste the error back and watch how it recovers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What does it cost after the trial?&lt;/strong&gt; The free tier is the trailer, not the film.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The same survey has a lovely detail here.&lt;br&gt;
The top frustration, for 66%, was answers "almost right, but not quite".&lt;/p&gt;

&lt;p&gt;Almost right is the danger zone.&lt;br&gt;
It's where a student copies, pastes, ships and cries.&lt;br&gt;
Fully wrong is easy to spot.&lt;br&gt;
Almost right walks straight into production wearing a fake moustache.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy58y2qw2tgttkaubjguh.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy58y2qw2tgttkaubjguh.webp" alt="Students gathered around a laptop, comparing AI coding assistants on a shared task" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo: &lt;a href="https://unsplash.com/@silverkblack" rel="noopener noreferrer"&gt;Vitaly Gariev&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/diverse-group-of-students-gathered-around-a-laptop-8gAbl776pc0" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Prompting is just clear thinking
&lt;/h2&gt;

&lt;p&gt;After enough trials, patterns start to show.&lt;/p&gt;

&lt;p&gt;The biggest one: good prompts are just clear thinking.&lt;br&gt;
If I can't explain what I want, the AI can't either.&lt;br&gt;
Turns out, that's also true for humans.&lt;/p&gt;

&lt;p&gt;Anthropic's own &lt;a href="https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices" rel="noopener noreferrer"&gt;prompting best practices&lt;/a&gt; say roughly the same.&lt;br&gt;
They suggest treating Claude like a brilliant but new employee.&lt;br&gt;
Brilliant, yes. But missing all your context.&lt;br&gt;
Their golden rule: show your prompt to a colleague with minimal context.&lt;br&gt;
If the colleague would be confused, the model will be too.&lt;/p&gt;

&lt;p&gt;That's not some secret AI trick.&lt;br&gt;
That's just writing a decent ticket.&lt;/p&gt;

&lt;p&gt;Here's a simple prompt shape I'd suggest to any student:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What you're building, in one sentence.&lt;/li&gt;
&lt;li&gt;What already exists: files, stack, the exact error.&lt;/li&gt;
&lt;li&gt;What "done" looks like.&lt;/li&gt;
&lt;li&gt;What it must not touch.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The last one saves more pain than the other three combined.&lt;br&gt;
AI tools love "helpfully" rewriting files you never mentioned.&lt;/p&gt;

&lt;h2&gt;
  
  
  What all those trials taught me
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;AI is a tool, not a teammate.&lt;/strong&gt;&lt;br&gt;
It doesn't know your product.&lt;br&gt;
It doesn't care about your deadline.&lt;br&gt;
You still have to think.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Every tool has a personality.&lt;/strong&gt;&lt;br&gt;
Some write great code and terrible explanations.&lt;br&gt;
Some explain beautifully and then write broken code.&lt;br&gt;
Knowing which is which saves hours.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The tool matters less than the person using it.&lt;/strong&gt;&lt;br&gt;
A good developer with a basic tool beats a confused one with every tool.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Curiosity compounds.&lt;/strong&gt;&lt;br&gt;
Later, I built a personal offline coding-agent experiment.&lt;br&gt;
Electron, React, Ollama and the Monaco editor.&lt;br&gt;
It was inspired by Claude Code and Bolt.&lt;br&gt;
The point was to explore the limits of contextual memory.&lt;br&gt;
You don't build that unless you've poked a lot of tools first.&lt;/p&gt;

&lt;p&gt;If you're curious what the battle station looks like, see &lt;a href="https://www.rahuldk.in/blog/three-monitors-one-monster-can" rel="noopener noreferrer"&gt;three monitors, one Monster can&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftlg27cjltqgx3i0w2fnl.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftlg27cjltqgx3i0w2fnl.webp" alt="Colourful code on a developer's monitor, the daily view when using AI coding assistants" width="799" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo: &lt;a href="https://unsplash.com/@jakubzerdzicki" rel="noopener noreferrer"&gt;Jakub Żerdzicki&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/code-displayed-on-computer-screens-v-jFS1AsHXo" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Free and student plans for AI tools: the legit route
&lt;/h2&gt;

&lt;p&gt;Please don't take the email thing as a tutorial.&lt;/p&gt;

&lt;p&gt;Read the terms of service of whatever you sign up for.&lt;br&gt;
If the terms say one trial per person, that means one.&lt;br&gt;
Respect them. Breaking the rules is not a growth hack.&lt;/p&gt;

&lt;p&gt;The good news: students have proper options now.&lt;/p&gt;

&lt;p&gt;GitHub's &lt;a href="https://education.github.com/pack" rel="noopener noreferrer"&gt;Student Developer Pack&lt;/a&gt; bundles tools and offers for students.&lt;br&gt;
Some offers are free while you're a student.&lt;br&gt;
Others are credits, discounts or time-limited trials.&lt;/p&gt;

&lt;p&gt;GitHub's docs also say &lt;a href="https://docs.github.com/en/copilot/how-tos/copilot-on-github/set-up-copilot/enable-copilot/set-up-for-students" rel="noopener noreferrer"&gt;verified students get free access to Copilot's features&lt;/a&gt;.&lt;br&gt;
GitHub rechecks that eligibility every month.&lt;br&gt;
The &lt;a href="https://docs.github.com/en/copilot/get-started/plans" rel="noopener noreferrer"&gt;Copilot plans page&lt;/a&gt; lists what each plan includes.&lt;/p&gt;

&lt;p&gt;Offers change, though.&lt;br&gt;
Read the official page, not a random thread from two years ago.&lt;/p&gt;

&lt;p&gt;My free advice, which is worth exactly what you paid:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Start with official student programmes.&lt;/li&gt;
&lt;li&gt;Use free tiers honestly: one account per human.&lt;/li&gt;
&lt;li&gt;Ask your college whether it already has licences.&lt;/li&gt;
&lt;li&gt;Pay for one tool once it saves you real hours.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And please, don't pay for "training" dressed up as an internship.&lt;br&gt;
I've already &lt;a href="https://www.rahuldk.in/blog/i-paid-for-an-internship" rel="noopener noreferrer"&gt;made that mistake for you&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learning by building beats learning by watching
&lt;/h2&gt;

&lt;p&gt;Don't wait until you can afford the perfect setup.&lt;br&gt;
Start with whatever you can get your hands on.&lt;br&gt;
Learn by doing it badly first.&lt;/p&gt;

&lt;p&gt;Pick one tiny project.&lt;br&gt;
Ship it to one real person.&lt;br&gt;
Let the AI help, but read every line it writes.&lt;/p&gt;

&lt;p&gt;When it breaks, and it will, you'll learn more than any course.&lt;br&gt;
I wrote about the most expensive version of that in &lt;a href="https://www.rahuldk.in/blog/the-night-i-broke-production" rel="noopener noreferrer"&gt;the night I broke production&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I did it badly for a long time.&lt;br&gt;
Now I do it slightly less badly.&lt;br&gt;
That's called progress.&lt;/p&gt;

&lt;h2&gt;
  
  
  The real reason: jugaad over spending
&lt;/h2&gt;

&lt;p&gt;Here's the deeper truth.&lt;br&gt;
It wasn't only about money we didn't have.&lt;br&gt;
It's how I'm wired.&lt;/p&gt;

&lt;p&gt;I value money a lot.&lt;br&gt;
I hate mindless spending.&lt;br&gt;
I save wherever I can.&lt;/p&gt;

&lt;p&gt;If a service is available for free, I won't pay for it.&lt;br&gt;
Coupons, discounts, free trials, student offers.&lt;br&gt;
I look for all of them.&lt;/p&gt;

&lt;p&gt;My rule is simple.&lt;br&gt;
If you can get it for free, why spend money on it?&lt;/p&gt;

&lt;p&gt;In Hindi, we call this &lt;a href="https://en.wikipedia.org/wiki/Jugaad" rel="noopener noreferrer"&gt;jugaad&lt;/a&gt;.&lt;br&gt;
Making scarce resources go further with creative improvisation.&lt;br&gt;
Jugaad takes time.&lt;br&gt;
But you always learn something while doing it.&lt;/p&gt;

&lt;p&gt;For me, spending money felt more wrong than spending time.&lt;br&gt;
Time spent figuring things out turned into skills.&lt;br&gt;
Money spent on shortcuts would just have turned into receipts.&lt;/p&gt;

&lt;p&gt;That's the real story behind dozens of email accounts.&lt;br&gt;
Not desperation.&lt;br&gt;
A habit of refusing to pay for what I could figure out myself.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What's the best way of learning AI coding tools as a student?
&lt;/h3&gt;

&lt;p&gt;Build one small, real project with one tool.&lt;br&gt;
Read every line it produces.&lt;br&gt;
Then give a second tool the same task and compare.&lt;/p&gt;

&lt;h3&gt;
  
  
  Are there free AI coding tools for students?
&lt;/h3&gt;

&lt;p&gt;Some, yes.&lt;br&gt;
GitHub's docs say verified students get free access to Copilot's features.&lt;br&gt;
Check the official pages, because student offers change.&lt;/p&gt;

&lt;h3&gt;
  
  
  Should I make multiple email accounts for free trials?
&lt;/h3&gt;

&lt;p&gt;No.&lt;br&gt;
Read the terms of service and respect them.&lt;br&gt;
Our trial hunt is a confession, not a strategy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://survey.stackoverflow.co/2025/ai" rel="noopener noreferrer"&gt;Stack Overflow 2025 Developer Survey: AI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices" rel="noopener noreferrer"&gt;Claude prompting best practices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://education.github.com/pack" rel="noopener noreferrer"&gt;GitHub Student Developer Pack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.github.com/en/copilot/how-tos/copilot-on-github/set-up-copilot/enable-copilot/set-up-for-students" rel="noopener noreferrer"&gt;GitHub Docs: Copilot for students&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.github.com/en/copilot/get-started/plans" rel="noopener noreferrer"&gt;GitHub Docs: Copilot plans&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What next
&lt;/h2&gt;

&lt;p&gt;Want the origin story? Read &lt;a href="https://www.rahuldk.in/blog/a-coach-complained-so-i-started-a-company" rel="noopener noreferrer"&gt;how a coach's complaint became a company&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Run a sports academy? Have a look at &lt;a href="https://www.trackmyacademy.com" rel="noopener noreferrer"&gt;Track My Academy&lt;/a&gt;.&lt;br&gt;
It's published by &lt;a href="https://www.trackmytech.in" rel="noopener noreferrer"&gt;TrackMy Tech&lt;/a&gt;, where I'm Executive Director.&lt;/p&gt;

&lt;p&gt;Student founder who wants to talk tools? &lt;a href="https://calendar.rahuldk.in" rel="noopener noreferrer"&gt;Book a call&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>beginners</category>
      <category>productivity</category>
      <category>career</category>
    </item>
    <item>
      <title>How I built a DSC PDF signer in Rust and Tauri</title>
      <dc:creator>Rahul Dhileep Kumar</dc:creator>
      <pubDate>Sat, 24 Oct 2026 16:54:22 +0000</pubDate>
      <link>https://dev.to/rahul_dk/how-i-built-a-dsc-pdf-signer-in-rust-and-tauri-29g0</link>
      <guid>https://dev.to/rahul_dk/how-i-built-a-dsc-pdf-signer-in-rust-and-tauri-29g0</guid>
      <description>&lt;p&gt;I'm a company director, and in India that means signing board resolutions and financial statements with a Digital Signature Certificate (DSC). The DSC is a Class 3 certificate on a USB token, the same one used for MCA and GST filings.&lt;/p&gt;

&lt;p&gt;For a while, signing a PDF with that token meant paying for and installing a large commercial PDF suite. A lot of software for one click and a PIN. I wanted something small, free and offline that would never break a signature already on the PDF.&lt;/p&gt;

&lt;p&gt;So I built &lt;a href="https://sign.rahuldk.in/?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=launch-v0.6" rel="noopener noreferrer"&gt;TrackMy Sign&lt;/a&gt;, a free, open-source (MIT) desktop app for Windows, macOS and Linux. This post is about how it works underneath. The code is at &lt;a href="https://github.com/rahuldk1105/trackmysign" rel="noopener noreferrer"&gt;github.com/rahuldk1105/trackmysign&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rust&lt;/strong&gt; for everything that matters: talking to the token, parsing PDFs, building signatures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tauri 2&lt;/strong&gt; for the desktop shell, so the app ships as a native binary with a webview rather than a bundled browser.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React&lt;/strong&gt; for the interface.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The interesting parts are all on the Rust side, so that's where the rest of this goes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 1: talking to the token with PKCS#11
&lt;/h2&gt;

&lt;p&gt;An Indian DSC token is a smart card in a USB stick. The private key is generated on it and can't be exported. You never get the key; you ask the token to sign something with it.&lt;/p&gt;

&lt;p&gt;The standard way to ask is PKCS#11, a C API that token vendors implement in a driver library: a &lt;code&gt;.dll&lt;/code&gt; on Windows, a &lt;code&gt;.dylib&lt;/code&gt; on macOS, a &lt;code&gt;.so&lt;/code&gt; on Linux. Every vendor ships its own. The flow is the same for all of them:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Load the vendor's library and call &lt;code&gt;C_Initialize&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Find a slot with a token in it and open a session.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;C_Login&lt;/code&gt; with the user's PIN.&lt;/li&gt;
&lt;li&gt;Find the certificate object and the private key that matches it.&lt;/li&gt;
&lt;li&gt;Call &lt;code&gt;C_Sign&lt;/code&gt; with that key over the data to be signed.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Steps 3 and 5 are the ones that matter for security. The PIN goes to the token's driver, and the signing happens on the token. The private key never leaves it. TrackMy Sign doesn't store the PIN.&lt;/p&gt;

&lt;p&gt;The awkward part is step 1. There's no standard place for the driver. Each vendor installs its library somewhere different, under a different name, on each platform. So the app keeps a list of known driver locations for common Indian tokens (HyperPKI, ePass2003, ProxKey, mToken, SafeNet and others), loads every one it finds, and lists the certificates from all of them together. A driver that fails to load is skipped rather than taking the app down with it. You can also point it at a driver in an odd location.&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 2: what a PDF signature actually is
&lt;/h2&gt;

&lt;p&gt;A PDF signature is a CMS (PKCS#7) &lt;code&gt;SignedData&lt;/code&gt; structure stored inside the PDF. TrackMy Sign uses the standard &lt;code&gt;adbe.pkcs7.detached&lt;/code&gt; sub-filter with SHA-256. "Detached" means the CMS blob doesn't contain the content it signs; it contains a hash of it, the signer's certificate chain, and the signature over those signed attributes.&lt;/p&gt;

&lt;p&gt;The question is: which content? The answer is the ByteRange.&lt;/p&gt;

&lt;p&gt;When you add a signature, you add a signature dictionary to the PDF. It has a &lt;code&gt;/Contents&lt;/code&gt; entry, which is a hex string reserved for the CMS blob, and a &lt;code&gt;/ByteRange&lt;/code&gt; entry, which is four numbers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight postscript"&gt;&lt;code&gt;&lt;span class="nv"&gt;/ByteRange&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mf"&gt;0&lt;/span&gt; &lt;span class="mf"&gt;840&lt;/span&gt; &lt;span class="mf"&gt;960&lt;/span&gt; &lt;span class="mf"&gt;240&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="nv"&gt;/Contents&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nf"&gt;000000...000000&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That reads as: "this signature covers bytes 0 to 840, and bytes 960 to 1200". The gap in the middle is exactly the &lt;code&gt;/Contents&lt;/code&gt; hex string. The signature covers the whole file except the hole where the signature itself goes.&lt;/p&gt;

&lt;p&gt;So signing is roughly:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Write the new PDF content with a &lt;code&gt;/Contents&lt;/code&gt; placeholder big enough for the signature, filled with zeros.&lt;/li&gt;
&lt;li&gt;Work out the byte offsets and write the real &lt;code&gt;/ByteRange&lt;/code&gt; numbers.&lt;/li&gt;
&lt;li&gt;Hash the bytes in the two ranges with SHA-256.&lt;/li&gt;
&lt;li&gt;Build the signed attributes, and send them to the token via &lt;code&gt;C_Sign&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Assemble the CMS &lt;code&gt;SignedData&lt;/code&gt; with the certificate chain, hex-encode it, and write it into the placeholder.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Nothing outside the placeholder changes after step 3. If it did, the hash would no longer match.&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 3: incremental updates, and why the auditor's signature survives
&lt;/h2&gt;

&lt;p&gt;This was the requirement I cared most about. Financial statements can arrive already signed by an auditor. If they signed before you, your signature has to go on without breaking theirs.&lt;/p&gt;

&lt;p&gt;Look at what the auditor's ByteRange covers: specific bytes of the file as it was when they signed. If any of those bytes move or change, their signature is invalid. A tool that loads a PDF into an object model, adds a signature and serialises the whole thing again will shift offsets, renumber or recompress objects, and break the auditor's signature.&lt;/p&gt;

&lt;p&gt;PDF has a mechanism for this, called an incremental update. You don't rewrite anything. You append to the end of the file:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the new and changed objects (the signature dictionary, the signature field, its visible appearance, the updated page and form objects);&lt;/li&gt;
&lt;li&gt;a new cross-reference section listing where those objects are;&lt;/li&gt;
&lt;li&gt;a new trailer whose &lt;code&gt;/Prev&lt;/code&gt; points back to the previous cross-reference section.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A reader follows the chain from the newest trailer backwards and sees the latest version of each object. The original bytes are still there, byte for byte. The auditor's ByteRange still covers exactly what it covered before, and those bytes are untouched. Their signature stays valid. Yours covers the whole file including their signature, which is what you want.&lt;/p&gt;

&lt;p&gt;TrackMy Sign has its own PDF parser and incremental writer, written in Rust. The writer only ever appends. It never rewrites the original bytes.&lt;/p&gt;

&lt;p&gt;The same mechanism handles the other features that touch a signed file: signing into an existing empty signature field in a bank or government form, putting one signature's visible box on every page, and certifying (locking) a document.&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 4: testing without a physical token
&lt;/h2&gt;

&lt;p&gt;You can't run CI against my USB token, so the tests use SoftHSM, a software implementation of a PKCS#11 token. To the app it looks like any other token driver: load the library, log in, find the key, sign.&lt;/p&gt;

&lt;p&gt;The end-to-end tests generate PDFs, sign them through SoftHSM, and then check the output with two independent validators:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;pyHanko&lt;/strong&gt;, a Python PDF signing library, validates the signatures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;qpdf&lt;/strong&gt; checks that the file structure is sound.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using validators I didn't write matters. My parser agreeing with my writer proves very little. Two unrelated tools agreeing with both proves rather more.&lt;/p&gt;

&lt;p&gt;Then the real-world checks, done by hand with my own Hypersecu HyperPKI HYP2003 token: Adobe Acrobat Reader shows "Signature is VALID" on the output.&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 5: the GST portal's local signer
&lt;/h2&gt;

&lt;p&gt;The GST portal doesn't sign in the browser. Its JavaScript connects to a signer service running locally on your computer, over a secure WebSocket to &lt;code&gt;127.0.0.1&lt;/code&gt;, and asks it to sign. Normally that service is a separate utility you install.&lt;/p&gt;

&lt;p&gt;TrackMy Sign can act as that local signer. At a high level:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It listens only on &lt;code&gt;127.0.0.1&lt;/code&gt;, only while the app is running, and only answers requests from the GST portal's domain.&lt;/li&gt;
&lt;li&gt;Because the browser needs a trusted TLS certificate even for localhost, the app sets up a certificate for &lt;code&gt;127.0.0.1&lt;/code&gt; on that computer.&lt;/li&gt;
&lt;li&gt;Every request is shown to you. You approve it and enter your PIN; the token signs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's an independent implementation of the local protocol the portal's JavaScript uses. A GST portal DSC registration signed this way was accepted by the portal.&lt;/p&gt;

&lt;p&gt;What it can't do: MCA21 V3 and the Income Tax portal use eMudhra's emBridge with licensed encryption, so TrackMy Sign can't sign on those. Keep using emBridge there.&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 6: releases on three platforms
&lt;/h2&gt;

&lt;p&gt;Every release is built by GitHub Actions from the public source, for Windows, macOS and Linux. Nobody builds a release on my laptop, and you can see what each release was built from.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;macOS.&lt;/strong&gt; The Mac app is signed and notarised by Apple. Notarisation means Apple scans the signed app and issues a ticket, so Gatekeeper opens it without the "unidentified developer" dance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Windows.&lt;/strong&gt; The installer isn't code-signed yet, so Windows SmartScreen shows a warning the first time you run it. I'd rather tell you that here than have you find out. A Microsoft Store version is in review, and a winget package is waiting for approval.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Linux.&lt;/strong&gt; AppImage and .deb.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's in v0.6.0
&lt;/h2&gt;

&lt;p&gt;Beyond signing: a signature designer (company seal or logo, "For Company — Director" lines), batch signing with one PIN, a watch folder, optional trusted timestamps and LTV, signature verification with PDF reports and whole-folder checks, password-protected PDFs, page tools (merge, rotate, reorder), signing any file as &lt;code&gt;.p7s&lt;/code&gt; or &lt;code&gt;.p7m&lt;/code&gt;, a private signing history, a DSC expiry reminder, in-app updates, and English, Hindi and Tamil. It works offline, with no account and no telemetry. The &lt;a href="https://sign.rahuldk.in/features/?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=launch-v0.6" rel="noopener noreferrer"&gt;features page&lt;/a&gt; has the full list.&lt;/p&gt;

&lt;p&gt;It isn't affiliated with Adobe, eMudhra, GSTN, MCA or the CCA.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it, break it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Website: &lt;a href="https://sign.rahuldk.in/?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=launch-v0.6" rel="noopener noreferrer"&gt;https://sign.rahuldk.in/?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=launch-v0.6&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Source: &lt;a href="https://github.com/rahuldk1105/trackmysign" rel="noopener noreferrer"&gt;https://github.com/rahuldk1105/trackmysign&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Downloads: &lt;a href="https://github.com/rahuldk1105/trackmysign/releases/latest" rel="noopener noreferrer"&gt;https://github.com/rahuldk1105/trackmysign/releases/latest&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I've only tested with my own token. If you have a different one, I'd like to hear whether it works, and especially if it doesn't. Issues and pull requests welcome.&lt;/p&gt;

</description>
      <category>rust</category>
      <category>opensource</category>
      <category>security</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Outsourcing vs building it yourself: our app arrived from 2006</title>
      <dc:creator>Rahul Dhileep Kumar</dc:creator>
      <pubDate>Fri, 23 Oct 2026 04:30:00 +0000</pubDate>
      <link>https://dev.to/rahul_dk/outsourcing-vs-building-it-yourself-our-app-arrived-from-2006-38eb</link>
      <guid>https://dev.to/rahul_dk/outsourcing-vs-building-it-yourself-our-app-arrived-from-2006-38eb</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwxy0pn86heshhlw8zl8b.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwxy0pn86heshhlw8zl8b.webp" alt="Rahul in a motorbike helmet, coding on a MacBook in front of a large monitor" width="800" height="1066"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every founder has a moment where they say, "Fine. I'll do it myself."&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;h2&gt;
  
  
  The idea was simple
&lt;/h2&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 href="https://www.trackmyacademy.com" rel="noopener noreferrer"&gt;Track My Academy&lt;/a&gt;.&lt;br&gt;
The full origin story is in &lt;a href="https://www.rahuldk.in/blog/a-coach-complained-so-i-started-a-company" rel="noopener noreferrer"&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 href="https://en.wikipedia.org/wiki/Outsourcing" rel="noopener noreferrer"&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 "in-house".&lt;br&gt;
We had enthusiasm.&lt;br&gt;
Enthusiasm is not a department.&lt;/p&gt;

&lt;h2&gt;
  
  
  Then the build arrived
&lt;/h2&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;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjt7p066yulmdb1hl520c.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjt7p066yulmdb1hl520c.webp" alt="An old CRT computer monitor on a desk, the kind of screen our first outsourced app seemed designed for" width="800" height="1199"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo: &lt;a href="https://unsplash.com/@siri_louis" rel="noopener noreferrer"&gt;Siri louis&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/silver-crt-computer-monitor-on-brown-wooden-desk-KdMgF5Q9EP4" rel="noopener noreferrer"&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;
"Damn. I'll do this myself."&lt;br&gt;
I'd build it with AI tools, the way people now call &lt;a href="https://en.wikipedia.org/wiki/Vibe_coding" rel="noopener noreferrer"&gt;vibe coding&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The stupidest ₹50,000 I've ever spent
&lt;/h2&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;h2&gt;
  
  
  Outsourcing app development vs building it yourself
&lt;/h2&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;h2&gt;
  
  
  How to write a product brief that doesn't come back from 2006
&lt;/h2&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 "done" means.&lt;/p&gt;

&lt;p&gt;And their "done" might be from 2006.&lt;/p&gt;

&lt;p&gt;Bigger companies write a &lt;a href="https://en.wikipedia.org/wiki/Product_requirements_document" rel="noopener noreferrer"&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;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flof32j7iyvamkm87caz3.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flof32j7iyvamkm87caz3.webp" alt="A hand-drawn website wireframe sketched on paper with an orange pen, the start of a clear product brief" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo: &lt;a href="https://unsplash.com/@sigmund" rel="noopener noreferrer"&gt;Compagnons&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/website-wireframe-sketch-on-paper-4UGmm3WRUoQ" rel="noopener noreferrer"&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; "A coach with one batch" beats "sports organisations".&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 "done" 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;
"Modern and clean" 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 href="https://en.wikipedia.org/wiki/Minimum_viable_product" rel="noopener noreferrer"&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;h2&gt;
  
  
  The first night of building a SaaS MVP myself
&lt;/h2&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;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd47omw145wm0gx6wxq11.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd47omw145wm0gx6wxq11.webp" alt="Rahul at his first workspace with a MacBook and an iPhone, the Track My Academy goals poster behind him" width="800" height="819"&gt;&lt;/a&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 href="https://www.rahuldk.in/blog/dozens-of-email-accounts-and-zero-shame" rel="noopener noreferrer"&gt;dozens of email accounts and zero shame&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The modern stack I ended up with
&lt;/h2&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 href="https://fastapi.tiangolo.com/" rel="noopener noreferrer"&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 href="https://supabase.com/docs" rel="noopener noreferrer"&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, "Which stack, and why?"&lt;br&gt;
If the answer is "it's what we always use", 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 href="https://www.rahuldk.in/blog/the-night-i-broke-production" rel="noopener noreferrer"&gt;I took production down for hours&lt;/a&gt;.&lt;br&gt;
Ownership cuts both ways.&lt;/p&gt;

&lt;h2&gt;
  
  
  Then I built the Android and iOS apps too
&lt;/h2&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;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frau69zvd3altgx8bst6x.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frau69zvd3altgx8bst6x.webp" alt="Two smartphones held up against a city skyline, one Android and one iPhone" width="799" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo: &lt;a href="https://unsplash.com/@rmrdnl" rel="noopener noreferrer"&gt;Daniel Romero&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/two-smartphones-held-up-against-city-skyline-txROtUzmo_c" rel="noopener noreferrer"&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 href="https://www.trackmyacademy.com" rel="noopener noreferrer"&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 "complicated".&lt;br&gt;
It works on the web and Android, with iOS coming soon.&lt;br&gt;
It's published by &lt;a href="https://www.trackmytech.in" rel="noopener noreferrer"&gt;TrackMy Tech&lt;/a&gt;, our bootstrapped sports-tech company.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned from the 2006 build
&lt;/h2&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;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Is it cheaper to outsource app development or build it yourself?
&lt;/h3&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;h3&gt;
  
  
  What should a product brief for a developer include?
&lt;/h3&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;h3&gt;
  
  
  Can a non-technical founder build a SaaS MVP?
&lt;/h3&gt;

&lt;p&gt;I was a bio-maths student in class 12.&lt;br&gt;
That story is in &lt;a href="https://www.rahuldk.in/blog/bio-maths-to-computer-science" rel="noopener noreferrer"&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;h2&gt;
  
  
  Your turn
&lt;/h2&gt;

&lt;p&gt;Run a sports academy and tired of spreadsheets?&lt;br&gt;
&lt;a href="https://www.trackmyacademy.com" rel="noopener noreferrer"&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 href="https://calendar.rahuldk.in" rel="noopener noreferrer"&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 href="https://www.rahuldk.in/blog/three-monitors-one-monster-can" rel="noopener noreferrer"&gt;my three-monitor desk setup&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>mobile</category>
      <category>webdev</category>
      <category>startup</category>
      <category>career</category>
    </item>
    <item>
      <title>R.I.P. smart ball v1: what smart football sensors taught me</title>
      <dc:creator>Rahul Dhileep Kumar</dc:creator>
      <pubDate>Wed, 21 Oct 2026 04:30:00 +0000</pubDate>
      <link>https://dev.to/rahul_dk/rip-smart-ball-v1-what-smart-football-sensors-taught-me-33c6</link>
      <guid>https://dev.to/rahul_dk/rip-smart-ball-v1-what-smart-football-sensors-taught-me-33c6</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fowgxkch2495d5lwrsmyk.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fowgxkch2495d5lwrsmyk.webp" alt="The first Smart Ball prototype: an open football shell with piezo sensors and a breadboard of wires inside" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We are gathered here today to remember smart ball v1.&lt;/p&gt;

&lt;p&gt;It was a football.&lt;br&gt;
It had smart football sensors inside.&lt;br&gt;
It never shipped.&lt;/p&gt;

&lt;p&gt;Rest in peace, little guy.&lt;br&gt;
This is the eulogy, and also a beginner's guide to why hardware is hard.&lt;br&gt;
If you have ever wanted to stuff electronics into a football, read this first.&lt;/p&gt;

&lt;p&gt;It will save you some wires.&lt;br&gt;
Possibly some eyebrows.&lt;/p&gt;

&lt;h2&gt;
  
  
  The idea: a football that knows it was kicked
&lt;/h2&gt;

&lt;p&gt;I love football.&lt;br&gt;
I love building things.&lt;br&gt;
I was also fascinated by how adidas built its smart ball.&lt;br&gt;
It was extremely expensive.&lt;br&gt;
And as far as I could find, you couldn't just buy one.&lt;/p&gt;

&lt;p&gt;Then the chance actually showed up.&lt;br&gt;
While I was working with CP Sports, we had a tie-up with an agency.&lt;br&gt;
That agency worked with a well-known sporting goods manufacturer in north India.&lt;br&gt;
They had a good contact with a senior executive there.&lt;/p&gt;

&lt;p&gt;In one discussion, they asked us a question.&lt;br&gt;
"Can you build something that tracks player data like the adidas smart ball?"&lt;br&gt;
"But cheaper?"&lt;br&gt;
We didn't even flinch.&lt;br&gt;
"Yes, of course."&lt;/p&gt;

&lt;p&gt;They asked for a structural design within a week.&lt;br&gt;
They'd help us pitch it to the company.&lt;br&gt;
There was talk of hefty funding.&lt;br&gt;
I genuinely thought my life was settled.&lt;/p&gt;

&lt;p&gt;A low-cost football with sensors inside.&lt;br&gt;
Something that could tell you about every touch.&lt;br&gt;
How hard could it be?&lt;/p&gt;

&lt;p&gt;Very.&lt;br&gt;
The answer is very.&lt;/p&gt;

&lt;p&gt;This was not a weekend hack, either.&lt;br&gt;
Smart Football R&amp;amp;D ran from December 2024 to December 2025.&lt;br&gt;
A full year of my life, inside a ball.&lt;/p&gt;

&lt;p&gt;It ran alongside &lt;a href="https://www.trackmyacademy.com" rel="noopener noreferrer"&gt;Track My Academy&lt;/a&gt;, which I was building at the same time.&lt;br&gt;
That one started because &lt;a href="https://www.rahuldk.in/blog/a-coach-complained-so-i-started-a-company" rel="noopener noreferrer"&gt;a coach complained about attendance&lt;/a&gt;.&lt;br&gt;
So yes, two big projects at once.&lt;br&gt;
One of them was round.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prototype zero: maida, boba straws and a pickleball
&lt;/h2&gt;

&lt;p&gt;We had one week to show a structure.&lt;br&gt;
We were second-year students.&lt;br&gt;
We had no 3D printer.&lt;br&gt;
We didn't even really know how 3D printing worked.&lt;/p&gt;

&lt;p&gt;So I improvised.&lt;br&gt;
The model just had to show the structure, in any shape or size.&lt;br&gt;
I made a clay-like dough out of maida, plain flour.&lt;br&gt;
I pushed it into boba straws to build the structure.&lt;br&gt;
I used a pickleball as the core and stuck cones on it.&lt;/p&gt;

&lt;p&gt;Yes, our very first smart ball prototype was partly made of flour.&lt;br&gt;
We presented it anyway.&lt;br&gt;
Everything went perfectly.&lt;br&gt;
Hold that thought.&lt;/p&gt;

&lt;h2&gt;
  
  
  What was inside smart ball v1
&lt;/h2&gt;

&lt;p&gt;Look at the photo above.&lt;/p&gt;

&lt;p&gt;That's an open football shell.&lt;br&gt;
Inside, there are &lt;a href="https://en.wikipedia.org/wiki/Piezoelectric_sensor" rel="noopener noreferrer"&gt;piezo sensors&lt;/a&gt; around the edges.&lt;br&gt;
In the middle, a breadboard covered in wires.&lt;/p&gt;

&lt;p&gt;Lots of wires.&lt;br&gt;
More wires than any football should legally contain.&lt;/p&gt;

&lt;p&gt;Piezo sensors turn pressure into a small electrical signal.&lt;br&gt;
Kick the ball, the sensor reacts.&lt;br&gt;
At least, that's the theory.&lt;/p&gt;

&lt;p&gt;Theory and breadboards are not always on speaking terms.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxjgi5mm37ab1ukspozp9.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxjgi5mm37ab1ukspozp9.webp" alt="Arduino board wired to sensors on a solderless breadboard, the classic hardware prototyping setup" width="799" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo: &lt;a href="https://unsplash.com/@vishnumaiea" rel="noopener noreferrer"&gt;Vishnu Mohanan&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/a-close-up-of-a-board-with-wires-attached-to-it-vtg8tAdoWVQ" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A &lt;a href="https://en.wikipedia.org/wiki/Breadboard" rel="noopener noreferrer"&gt;breadboard&lt;/a&gt; is brilliant for prototyping.&lt;br&gt;
You push wires in, no soldering needed, and you can reuse it.&lt;/p&gt;

&lt;p&gt;Wikipedia also politely notes its connections are "subject to jostle".&lt;/p&gt;

&lt;p&gt;Jostle.&lt;br&gt;
In a football.&lt;br&gt;
The object whose entire job is being kicked.&lt;/p&gt;

&lt;p&gt;You can see where this is going.&lt;/p&gt;

&lt;h2&gt;
  
  
  The year in one list
&lt;/h2&gt;

&lt;p&gt;People imagine hardware R&amp;amp;D as one big "eureka".&lt;br&gt;
It's more like a long list of small "oh no".&lt;/p&gt;

&lt;p&gt;Here is what that year actually covered:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Sensor selection.&lt;/strong&gt; Which sensor, how many, and what it should even measure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Component placement.&lt;/strong&gt; Where everything sits inside a sphere that gets booted.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ball balance.&lt;/strong&gt; Add weight on one side and the ball stops rolling straight.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bladder and pressure research.&lt;/strong&gt; The air inside changes how everything behaves.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prototype testing.&lt;/strong&gt; Kick it, check it, fix it, repeat.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;App dashboard concepts.&lt;/strong&gt; What a player or coach would actually see afterwards.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every item on that list could be its own engineering degree.&lt;br&gt;
I had a breadboard and optimism.&lt;/p&gt;

&lt;p&gt;Ball balance was the sneaky one.&lt;br&gt;
In software, a heavy function makes things slow.&lt;br&gt;
In a football, a heavy component makes it wobble.&lt;br&gt;
Nobody wants a ball that curves because of your circuit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Our first PCB, made in Coimbatore
&lt;/h2&gt;

&lt;p&gt;The breadboard could only take us so far.&lt;br&gt;
So we designed our own custom PCB, a &lt;a href="https://en.wikipedia.org/wiki/Printed_circuit_board" rel="noopener noreferrer"&gt;printed circuit board&lt;/a&gt;.&lt;br&gt;
We went to a professional PCB printing place in Coimbatore.&lt;br&gt;
We spent two full days there.&lt;/p&gt;

&lt;p&gt;We came back with our first PCB.&lt;br&gt;
We connected it to our own sensors.&lt;br&gt;
And it worked.&lt;/p&gt;

&lt;p&gt;I can't fully explain that feeling.&lt;br&gt;
The sensors responding, with everything connected inside the ball.&lt;br&gt;
You could see the joy in our eyes.&lt;br&gt;
That moment taught us more about IoT devices than any course.&lt;/p&gt;

&lt;h2&gt;
  
  
  IMU vs piezo sensors: two ways to make a ball feel things
&lt;/h2&gt;

&lt;p&gt;There are two common ways to give a ball a sense of touch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Piezo sensors&lt;/strong&gt; react to pressure and impact.&lt;br&gt;
They are cheap, simple and good at noticing a sudden hit.&lt;br&gt;
The catch: they &lt;a href="https://en.wikipedia.org/wiki/Piezoelectric_sensor" rel="noopener noreferrer"&gt;cannot do truly static measurements&lt;/a&gt;.&lt;br&gt;
They notice the kick, not the gentle story after it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;An IMU&lt;/strong&gt; is an &lt;a href="https://en.wikipedia.org/wiki/Inertial_measurement_unit" rel="noopener noreferrer"&gt;inertial measurement unit&lt;/a&gt;.&lt;br&gt;
It combines accelerometers, gyroscopes and sometimes magnetometers.&lt;br&gt;
It measures how the object moves and rotates.&lt;/p&gt;

&lt;p&gt;The catch there is drift.&lt;br&gt;
Tiny measurement errors pile up over time.&lt;br&gt;
The device slowly loses track of where it really is.&lt;/p&gt;

&lt;p&gt;So, roughly:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Piezo sensor&lt;/th&gt;
&lt;th&gt;IMU&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Good at&lt;/td&gt;
&lt;td&gt;Detecting impacts and pressure&lt;/td&gt;
&lt;td&gt;Motion, spin and orientation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Weak at&lt;/td&gt;
&lt;td&gt;Static or slow measurements&lt;/td&gt;
&lt;td&gt;Drift over time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Beginner-friendly&lt;/td&gt;
&lt;td&gt;Very&lt;/td&gt;
&lt;td&gt;Less so&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;My opinion: piezo is the friendly place to start.&lt;br&gt;
An IMU is where the serious connected ball technology lives.&lt;/p&gt;

&lt;h2&gt;
  
  
  Meanwhile, the professionals
&lt;/h2&gt;

&lt;p&gt;While I was fighting wires, real sports tech was doing real things.&lt;/p&gt;

&lt;p&gt;At the 2022 World Cup, the match ball had an IMU sensor in its centre.&lt;br&gt;
According to &lt;a href="https://inside.fifa.com/en/innovation/world-cup-2022/semi-automated-offside-technology" rel="noopener noreferrer"&gt;FIFA&lt;/a&gt;, it sent data 500 times per second.&lt;br&gt;
That helped detect the exact moment a ball was kicked, for offside calls.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://news.adidas.com/football/adidas-reveals-the-first-fifa-world-cup-official-match-ball-featuring-connected-ball-technology/s/cccb7187-a67c-4166-b57d-2b28f1d36fa0" rel="noopener noreferrer"&gt;adidas says&lt;/a&gt; a suspension system held that sensor steady at the centre.&lt;br&gt;
It ran on a rechargeable battery, charged by induction.&lt;/p&gt;

&lt;p&gt;Read that again.&lt;br&gt;
They suspended a sensor in the middle of a ball.&lt;br&gt;
That is the ball balance problem, solved properly.&lt;/p&gt;

&lt;p&gt;500 times per second.&lt;br&gt;
My prototype struggled to report once without a wire falling off.&lt;/p&gt;

&lt;p&gt;Humbling?&lt;br&gt;
Yes.&lt;/p&gt;

&lt;p&gt;Inspiring?&lt;br&gt;
Also yes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0tx96m6ru14gm4f4xfgc.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0tx96m6ru14gm4f4xfgc.webp" alt="Close-up of a well-used match football resting on green grass" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo: &lt;a href="https://unsplash.com/@one23four56" rel="noopener noreferrer"&gt;Jason Mayer&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/a-close-up-of-a-soccer-ball-in-the-grass-Fe3mpcOMQnU" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The real engineer: Jitendra
&lt;/h2&gt;

&lt;p&gt;Let me give credit where it's due.&lt;br&gt;
A huge shout-out to Jitendra.&lt;/p&gt;

&lt;p&gt;He was my junior, and I met him in my second year.&lt;br&gt;
Geeky, nerdy, and with an immense knowledge of IoT and gadgets.&lt;br&gt;
He built about 70% of the IoT systems that made the ball work.&lt;br&gt;
He also wrote the code for it.&lt;/p&gt;

&lt;p&gt;My part was product design.&lt;br&gt;
I told him how I wanted it to work.&lt;br&gt;
He made it work.&lt;br&gt;
That's a very good deal for me.&lt;/p&gt;

&lt;h2&gt;
  
  
  I learned to solder (soldering safety first)
&lt;/h2&gt;

&lt;p&gt;Soldering was the painful part for me.&lt;br&gt;
Before this project, I had never soldered anything.&lt;/p&gt;

&lt;p&gt;Complete beginner.&lt;br&gt;
Absolute zero.&lt;/p&gt;

&lt;p&gt;The smart ball got me soldering.&lt;br&gt;
I look like a scientist.&lt;br&gt;
I solder like a nervous chef.&lt;/p&gt;

&lt;p&gt;But I learned.&lt;br&gt;
Slowly.&lt;/p&gt;

&lt;p&gt;If you're a beginner too, here's the bit to take seriously.&lt;/p&gt;

&lt;p&gt;A &lt;a href="https://en.wikipedia.org/wiki/Soldering_iron" rel="noopener noreferrer"&gt;soldering iron&lt;/a&gt; runs roughly between 200 and 480 °C.&lt;br&gt;
That is not a "quick touch to check" temperature.&lt;br&gt;
Hold it by the handle and put it back in its stand.&lt;/p&gt;

&lt;p&gt;The fumes matter too.&lt;br&gt;
The UK's Health and Safety Executive is blunt about it.&lt;br&gt;
&lt;a href="https://www.hse.gov.uk/pubns/indg248.pdf" rel="noopener noreferrer"&gt;Rosin solder flux fume can cause asthma and dermatitis&lt;/a&gt;.&lt;br&gt;
Their advice is simple: keep your face out of the fume and use extraction.&lt;/p&gt;

&lt;p&gt;So my beginner soldering safety list:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Safety glasses on, every time.&lt;/li&gt;
&lt;li&gt;Ventilation or a fume extractor.&lt;/li&gt;
&lt;li&gt;Iron goes back in the stand.&lt;/li&gt;
&lt;li&gt;Wash your hands after handling solder.&lt;/li&gt;
&lt;li&gt;Never assume the tip has cooled down.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftskpa2eq0qv7cg8y0ae2.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftskpa2eq0qv7cg8y0ae2.webp" alt="Soldering iron tip joining components on a printed circuit board while a hand feeds solder wire" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo: &lt;a href="https://unsplash.com/@www_erzetich_com" rel="noopener noreferrer"&gt;Blaz Erzetic&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/C-Cml4m7rUo" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why hardware is hard (and why v1 never shipped)
&lt;/h2&gt;

&lt;p&gt;Hardware is hard.&lt;br&gt;
Everyone says it.&lt;br&gt;
Now I get it.&lt;/p&gt;

&lt;p&gt;With software, a mistake costs you a deploy.&lt;br&gt;
With hardware, a mistake costs you a ball.&lt;/p&gt;

&lt;p&gt;Software also forgives you faster.&lt;br&gt;
When I &lt;a href="https://www.rahuldk.in/blog/the-night-i-broke-production" rel="noopener noreferrer"&gt;broke production for hours&lt;/a&gt;, at least nothing physical died.&lt;br&gt;
You can't hotfix a solder joint over Wi-Fi.&lt;/p&gt;

&lt;p&gt;Hardware also costs money at every single step.&lt;br&gt;
Parts, more parts, replacement parts for the parts you fried.&lt;/p&gt;

&lt;p&gt;Now, the plot twist I promised.&lt;br&gt;
That hefty funding? It never came.&lt;br&gt;
It was promised. It just never arrived.&lt;/p&gt;

&lt;p&gt;We spent more than a year on R&amp;amp;D with basically no outside money.&lt;br&gt;
We still put more than ₹1 lakh of our own into the ball.&lt;br&gt;
Eventually, we had to stop.&lt;br&gt;
We put the project aside, as a memory.&lt;/p&gt;

&lt;p&gt;No dramatic explosion.&lt;br&gt;
Just a deal that never landed, and a very sensible spreadsheet.&lt;/p&gt;

&lt;p&gt;Smart ball v1 was never finished.&lt;br&gt;
But it was never meant to be the final version.&lt;/p&gt;

&lt;p&gt;That's what v1 is for.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hardware prototyping for beginners: what I'd tell you
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Building teaches you what reading can't.&lt;/strong&gt;&lt;br&gt;
I understood sensors only after I wired one wrong.&lt;br&gt;
I learn by doing things badly first.&lt;br&gt;
Same energy as rebuilding &lt;a href="https://www.rahuldk.in/blog/the-app-that-arrived-from-2006" rel="noopener noreferrer"&gt;the app that looked like 2006&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start on a breadboard, finish on solder.&lt;/strong&gt;&lt;br&gt;
Breadboards are for finding out.&lt;br&gt;
Solder is for when you've found out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Think about where the thing lives.&lt;/strong&gt;&lt;br&gt;
A circuit on a desk is easy.&lt;br&gt;
A circuit inside a ball gets kicked, squashed and rained on.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prototypes are allowed to die.&lt;/strong&gt;&lt;br&gt;
Their job is to teach you, not to survive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Respect hardware people.&lt;/strong&gt;&lt;br&gt;
Anyone who ships a physical product is a wizard.&lt;br&gt;
I'm still at the "please don't short-circuit" stage.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What sensors are used in smart footballs?
&lt;/h3&gt;

&lt;p&gt;Mostly IMUs, which track motion and spin.&lt;br&gt;
The 2022 World Cup ball used one sampling 500 times per second.&lt;br&gt;
Piezo sensors are a cheaper way to detect impacts, which is where I started.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is a smart football hard to build as a beginner?
&lt;/h3&gt;

&lt;p&gt;A basic "did it get kicked" prototype is doable.&lt;br&gt;
A balanced, durable ball that survives real matches is properly hard.&lt;br&gt;
Budget for broken parts and broken pride.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is soldering safe for beginners?
&lt;/h3&gt;

&lt;p&gt;It can be, with basic care.&lt;br&gt;
Wear eye protection, keep your face out of the fume and use ventilation.&lt;br&gt;
Treat the iron like it's always hot, because it usually is.&lt;/p&gt;

&lt;h2&gt;
  
  
  The funeral is over
&lt;/h2&gt;

&lt;p&gt;Smart ball v1 lives on in my heart.&lt;br&gt;
We still have the prototype.&lt;br&gt;
We still have the design files.&lt;/p&gt;

&lt;p&gt;I still think about the idea.&lt;br&gt;
I still watch football and think about sensors.&lt;br&gt;
Building &lt;a href="https://www.veerancup.in" rel="noopener noreferrer"&gt;Veeran&lt;/a&gt; made that worse, as I explain in &lt;a href="https://www.rahuldk.in/blog/veeran-ruined-football-for-me" rel="noopener noreferrer"&gt;this post&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If we get funding, we'll restart from exactly where we left off.&lt;br&gt;
V2 might happen someday.&lt;br&gt;
Sports tech is the whole point of &lt;a href="https://www.trackmytech.in" rel="noopener noreferrer"&gt;TrackMy Tech&lt;/a&gt;, so never say never.&lt;/p&gt;

&lt;p&gt;Until then, I'll keep the safety glasses close.&lt;/p&gt;

&lt;p&gt;Building something in sports tech, hardware or software?&lt;br&gt;
&lt;a href="https://calendar.rahuldk.in" rel="noopener noreferrer"&gt;Book a call with me&lt;/a&gt; and we can compare scars.&lt;/p&gt;

</description>
      <category>iot</category>
      <category>arduino</category>
      <category>hardware</category>
      <category>startup</category>
    </item>
    <item>
      <title>Production outage lessons: we blamed our code. It was SSL.</title>
      <dc:creator>Rahul Dhileep Kumar</dc:creator>
      <pubDate>Fri, 16 Oct 2026 04:30:00 +0000</pubDate>
      <link>https://dev.to/rahul_dk/production-outage-lessons-we-blamed-our-code-it-was-ssl-d1n</link>
      <guid>https://dev.to/rahul_dk/production-outage-lessons-we-blamed-our-code-it-was-ssl-d1n</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbqv7noftlxn6f9ylj47v.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbqv7noftlxn6f9ylj47v.webp" alt="The office desk: three monitors, a Pikachu, a goals poster and a chandelier made of Monster cans" width="800" height="763"&gt;&lt;/a&gt;&lt;/p&gt;

&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;h2&gt;
  
  
  The clever idea: splitting the backend
&lt;/h2&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;
"This model is so capable. We can try some serious stuff with it."&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 "distributed" in your head and feel tall.&lt;/p&gt;

&lt;h2&gt;
  
  
  Then everything went down
&lt;/h2&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 href="https://www.trackmyacademy.com" rel="noopener noreferrer"&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;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb0oh0y1x4rsbyvpzgbgv.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb0oh0y1x4rsbyvpzgbgv.webp" alt="A server room with rows of network cabinets under blue cables" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo: &lt;a href="https://unsplash.com/@tvick" rel="noopener noreferrer"&gt;Taylor Vick&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/server-room-with-network-cabinets-aWslrFhs1w4" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The real culprit: an expired SSL certificate
&lt;/h2&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 href="https://en.wikipedia.org/wiki/Public_key_certificate" rel="noopener noreferrer"&gt;TLS certificate&lt;/a&gt; proves a server is who it claims to be.&lt;br&gt;
Every certificate has a "Not After" 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 href="https://letsencrypt.org/docs/faq/" rel="noopener noreferrer"&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 href="https://sre.google/sre-book/introduction/" rel="noopener noreferrer"&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;h2&gt;
  
  
  The longest night in the office
&lt;/h2&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 href="https://www.rahuldk.in/blog/three-monitors-one-monster-can" rel="noopener noreferrer"&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 href="https://www.rahuldk.in/blog/exams-the-office-and-a-1am-gate" rel="noopener noreferrer"&gt;exams, the office and a 1 a.m. gate&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  When I'm stuck badly enough, I call Arun
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyel3runb1ekkntch709z.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyel3runb1ekkntch709z.webp" alt="Arun, our CTO, smiling at the camera" width="600" height="800"&gt;&lt;/a&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 href="https://www.arunvignesh.my/" rel="noopener noreferrer"&gt;his portfolio&lt;/a&gt;.&lt;br&gt;
He's the reason "stuck" never becomes "stuck forever".&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;h2&gt;
  
  
  A deployment checklist I'd hand my past self
&lt;/h2&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; "Deployed" is not the same as "working".&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;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjvncm0c9gxd9npxgmlwy.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjvncm0c9gxd9npxgmlwy.webp" alt="A hand ticking items off a deployment checklist in a notebook" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo: &lt;a href="https://unsplash.com/@jakubzerdzicki" rel="noopener noreferrer"&gt;Jakub Żerdzicki&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/hand-checking-off-items-on-a-to-do-list-fXlL5I0IvK0" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Rollbacks: have a way back
&lt;/h2&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 href="https://martinfowler.com/bliki/BlueGreenDeployment.html" rel="noopener noreferrer"&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 "a rapid way to rollback".&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;h2&gt;
  
  
  Monitoring and alerting: find out before your users do
&lt;/h2&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 "is your app down?"&lt;/p&gt;

&lt;p&gt;The Google SRE chapter on &lt;a href="https://sre.google/sre-book/monitoring-distributed-systems/" rel="noopener noreferrer"&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: "Every page should be actionable."&lt;br&gt;
An alert you ignore is just a very expensive ringtone.&lt;/p&gt;

&lt;p&gt;Later, I built a "Pager System" 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;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7r9z7k430pt4gqagrl0p.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7r9z7k430pt4gqagrl0p.webp" alt="A laptop showing monitoring dashboard graphs for latency and traffic" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo: &lt;a href="https://unsplash.com/@lukechesser" rel="noopener noreferrer"&gt;Luke Chesser&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/graphs-of-performance-analytics-on-a-laptop-screen-JKUTrJ4vK00" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Write the postmortem, and keep it blameless
&lt;/h2&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 href="https://sre.google/sre-book/postmortem-culture/" rel="noopener noreferrer"&gt;postmortem culture&lt;/a&gt; puts it nicely.&lt;br&gt;
"Writing a postmortem is not punishment."&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 href="https://www.atlassian.com/incident-management/postmortem" rel="noopener noreferrer"&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;h2&gt;
  
  
  Was it worth it?
&lt;/h2&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;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What are the most important production outage lessons for a small team?
&lt;/h3&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;h3&gt;
  
  
  Can an expired SSL certificate take down a backend?
&lt;/h3&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;h3&gt;
  
  
  What should go in an incident postmortem?
&lt;/h3&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;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sre.google/sre-book/introduction/" rel="noopener noreferrer"&gt;Google SRE book: Introduction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sre.google/sre-book/monitoring-distributed-systems/" rel="noopener noreferrer"&gt;Google SRE book: Monitoring distributed systems&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sre.google/sre-book/postmortem-culture/" rel="noopener noreferrer"&gt;Google SRE book: Postmortem culture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.atlassian.com/incident-management/postmortem" rel="noopener noreferrer"&gt;Atlassian: Incident postmortems&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://martinfowler.com/bliki/BlueGreenDeployment.html" rel="noopener noreferrer"&gt;Martin Fowler: Blue-green deployment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Public_key_certificate" rel="noopener noreferrer"&gt;Wikipedia: Public key certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://letsencrypt.org/docs/faq/" rel="noopener noreferrer"&gt;Let's Encrypt FAQ&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What next
&lt;/h2&gt;

&lt;p&gt;Curious how the product got built in the first place? Read &lt;a href="https://www.rahuldk.in/blog/the-app-that-arrived-from-2006" rel="noopener noreferrer"&gt;the app that arrived from 2006&lt;/a&gt;.&lt;br&gt;
Or how I learned the tools: &lt;a href="https://www.rahuldk.in/blog/dozens-of-email-accounts-and-zero-shame" rel="noopener noreferrer"&gt;dozens of email accounts and zero shame&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Running an academy? &lt;a href="https://www.trackmyacademy.com" rel="noopener noreferrer"&gt;Track My Academy&lt;/a&gt; handles attendance, fees, player analytics and parent communication.&lt;br&gt;
It's built by &lt;a href="https://www.trackmytech.in" rel="noopener noreferrer"&gt;TrackMy Tech&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Want to talk shipping, breaking and fixing things? &lt;a href="https://calendar.rahuldk.in" rel="noopener noreferrer"&gt;Book a call&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>ssl</category>
      <category>webdev</category>
      <category>startup</category>
    </item>
    <item>
      <title>How to win a hackathon, according to a tired judge</title>
      <dc:creator>Rahul Dhileep Kumar</dc:creator>
      <pubDate>Mon, 12 Oct 2026 04:30:00 +0000</pubDate>
      <link>https://dev.to/rahul_dk/how-to-win-a-hackathon-according-to-a-tired-judge-4dn0</link>
      <guid>https://dev.to/rahul_dk/how-to-win-a-hackathon-according-to-a-tired-judge-4dn0</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4q0j04zr58aj6j2pz2bd.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4q0j04zr58aj6j2pz2bd.webp" alt="A student demos a project on a laptop to a visitor across an exhibition table at a campus tech event" width="799" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Cover photo: &lt;a href="https://unsplash.com/@evan_marvell" rel="noopener noreferrer"&gt;Evan Marvell&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/two-men-at-a-table-with-a-laptop-uzBZnacIKgQ" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;On 8 and 9 October, I sat on the other side of the table.&lt;/p&gt;

&lt;p&gt;I was on the jury of a hackathon 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 turned up.&lt;br&gt;
Over two days, I evaluated somewhere between 20 and 30 of them.&lt;/p&gt;

&lt;p&gt;I've been a hackathon participant.&lt;br&gt;
I've lost hackathons.&lt;br&gt;
I've won a couple too, which my &lt;a href="https://www.rahuldk.in/about" rel="noopener noreferrer"&gt;about page&lt;/a&gt; mentions with suspicious frequency.&lt;/p&gt;

&lt;p&gt;Now I've judged one.&lt;br&gt;
The personal story of that loop is in &lt;a href="https://www.rahuldk.in/blog/from-hackathon-loser-to-hackathon-jury" rel="noopener noreferrer"&gt;from hackathon loser to hackathon jury&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This post is the practical bit.&lt;br&gt;
How to win a hackathon, from someone who just spent two days scoring them.&lt;/p&gt;

&lt;h2&gt;
  
  
  What hackathon judges actually see
&lt;/h2&gt;

&lt;p&gt;Here's the part nobody tells participants.&lt;/p&gt;

&lt;p&gt;Your judge isn't seeing your project in isolation.&lt;br&gt;
They're seeing it as team number seven.&lt;br&gt;
Or team number fourteen.&lt;/p&gt;

&lt;p&gt;Most teams in a judge's group share the same or similar problem statements.&lt;br&gt;
So the judge has already heard your problem explained.&lt;br&gt;
Several times.&lt;br&gt;
Usually in the same words.&lt;/p&gt;

&lt;p&gt;Around the fifth team, focus starts slipping.&lt;br&gt;
Not because judges don't care.&lt;br&gt;
Because judges are human.&lt;/p&gt;

&lt;p&gt;There's research on this, sort of.&lt;br&gt;
&lt;a href="https://en.wikipedia.org/wiki/Decision_fatigue" rel="noopener noreferrer"&gt;Decision fatigue&lt;/a&gt; describes decisions getting worse after a long run of them.&lt;br&gt;
The evidence for it is honestly mixed, so don't build a religion on it.&lt;br&gt;
But anyone who has judged fifteen pitches in a row will nod politely.&lt;/p&gt;

&lt;p&gt;Running order matters too.&lt;br&gt;
A &lt;a href="https://www.sciencedaily.com/releases/2005/03/050308102138.htm" rel="noopener noreferrer"&gt;Carnegie Mellon study&lt;/a&gt; found later performers got higher marks.&lt;br&gt;
That was Eurovision and figure skating, not hackathons.&lt;br&gt;
You can't choose your slot anyway.&lt;br&gt;
So the only thing you control is how fast you earn the judge's attention.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzvzxd0xce9umnyoagykg.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzvzxd0xce9umnyoagykg.webp" alt="A smiling student presents in front of a projected slide while a room of fellow students listens" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo: &lt;a href="https://unsplash.com/@tinasihgusti" rel="noopener noreferrer"&gt;Herlambang Tinasih Gusti&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/a-man-standing-in-front-of-a-group-of-people-3kc_75Rdgyk" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The first 30 seconds of your hackathon pitch
&lt;/h2&gt;

&lt;p&gt;Start like a person, not a slide deck.&lt;/p&gt;

&lt;p&gt;Give the judge a firm handshake.&lt;br&gt;
Ask them how their day is going.&lt;br&gt;
They'll appreciate it.&lt;br&gt;
It's probably been a long one.&lt;/p&gt;

&lt;p&gt;Then introduce yourself and your team.&lt;br&gt;
Clearly.&lt;br&gt;
Confidently.&lt;br&gt;
Names, and who built what.&lt;/p&gt;

&lt;p&gt;Then say three things, fast:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The problem statement&lt;/strong&gt; you picked, in one line.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The scope&lt;/strong&gt; you chose to tackle within it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your solution&lt;/strong&gt;, in one sentence a tired person can repeat.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's it.&lt;br&gt;
You now have the judge's attention, and you've spent maybe thirty seconds.&lt;/p&gt;

&lt;p&gt;An &lt;a href="https://en.wikipedia.org/wiki/Elevator_pitch" rel="noopener noreferrer"&gt;elevator pitch&lt;/a&gt; usually runs thirty seconds to two minutes.&lt;br&gt;
Your opening should sit at the short end.&lt;/p&gt;

&lt;h2&gt;
  
  
  Show the prototype early
&lt;/h2&gt;

&lt;p&gt;The demo is the hackathon.&lt;br&gt;
Everything else is decoration.&lt;/p&gt;

&lt;p&gt;Plenty of hackathon rulebooks say this out loud.&lt;br&gt;
The &lt;a href="https://github.com/UHCodeRED/rules" rel="noopener noreferrer"&gt;UH CodeRED rules&lt;/a&gt;, for example, strongly encourage a demo.&lt;br&gt;
They say pitches and presentations are discouraged.&lt;br&gt;
They even say teams aren't judged on the quality of their pitch.&lt;/p&gt;

&lt;p&gt;Not every hackathon works that way.&lt;br&gt;
But almost every judge prefers seeing a thing work to hearing about it.&lt;/p&gt;

&lt;p&gt;So get to the prototype quickly.&lt;br&gt;
Show the main flow, end to end.&lt;br&gt;
One happy path that works beats five half-loaded features.&lt;/p&gt;

&lt;p&gt;If something breaks, say so and move on.&lt;br&gt;
Judges have seen broken demos before.&lt;br&gt;
I've broken &lt;a href="https://www.rahuldk.in/blog/the-night-i-broke-production" rel="noopener noreferrer"&gt;production&lt;/a&gt;, so I'm in no position to judge that part.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjraurs8wakt2q6yqt020.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjraurs8wakt2q6yqt020.webp" alt="Four college students crowd around a laptop on a podium as they get their project demo ready" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo: &lt;a href="https://www.pexels.com/@shibraj-deb-429139665" rel="noopener noreferrer"&gt;Shibraj Deb&lt;/a&gt; on &lt;a href="https://www.pexels.com/photo/men-looking-in-laptop-16070143/" rel="noopener noreferrer"&gt;Pexels&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to win a hackathon: stay on the problem statement
&lt;/h2&gt;

&lt;p&gt;This one hurt to watch, because I used to do it.&lt;/p&gt;

&lt;p&gt;Teams drift.&lt;br&gt;
They start on the given problem statement.&lt;br&gt;
Then they bolt on a chatbot, a dashboard and a dream.&lt;br&gt;
By the end, the judge can't find the original problem.&lt;/p&gt;

&lt;p&gt;Your score is usually tied to the problem you were given.&lt;br&gt;
Solving a different, cooler problem rarely earns bonus points.&lt;br&gt;
It mostly earns confused faces.&lt;/p&gt;

&lt;p&gt;Before you build anything, write the problem statement on a sticky note.&lt;br&gt;
Every feature must point back to it.&lt;br&gt;
If it doesn't, it waits for version two.&lt;br&gt;
I run my own life off sticky notes, as &lt;a href="https://www.rahuldk.in/blog/three-monitors-one-monster-can" rel="noopener noreferrer"&gt;my desk setup post&lt;/a&gt; proves.&lt;/p&gt;

&lt;h2&gt;
  
  
  Don't over-engineer your hackathon project
&lt;/h2&gt;

&lt;p&gt;The second classic mistake: building a cathedral in two days.&lt;/p&gt;

&lt;p&gt;Microservices.&lt;br&gt;
Three databases.&lt;br&gt;
A custom login system nobody asked for.&lt;br&gt;
And a demo that loads forever.&lt;/p&gt;

&lt;p&gt;Judges don't score your architecture diagram.&lt;br&gt;
They score what they can see working.&lt;/p&gt;

&lt;p&gt;Pick the boring stack you already know.&lt;br&gt;
Build the smallest thing that proves your idea.&lt;br&gt;
Spend the saved hours polishing the one flow you'll demo.&lt;/p&gt;

&lt;p&gt;When I started building &lt;a href="https://www.trackmyacademy.com" rel="noopener noreferrer"&gt;Track My Academy&lt;/a&gt;, the first night ended with a landing page.&lt;br&gt;
Not an architecture.&lt;br&gt;
A landing page I actually liked.&lt;br&gt;
Small, finished things build momentum.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the jury doesn't want to hear
&lt;/h2&gt;

&lt;p&gt;Some things quietly drain your score.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Facts the judge already knows.&lt;/strong&gt; They've read the problem statement. Probably several times today.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Statistics read off a slide.&lt;/strong&gt; Especially ones an AI tool produced five minutes earlier.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A tour of everything you made with AI.&lt;/strong&gt; Use AI tools, absolutely. Just don't make them the pitch.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trying to impress instead of explain.&lt;/strong&gt; Big words, no working product. Judges spot it instantly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On AI: I'm a fan.&lt;br&gt;
I once chased free AI trials across &lt;a href="https://www.rahuldk.in/blog/dozens-of-email-accounts-and-zero-shame" rel="noopener noreferrer"&gt;dozens of email accounts&lt;/a&gt;.&lt;br&gt;
But the judge is scoring your thinking, not your prompt history.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsgl93x8tw3isydvptg60.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsgl93x8tw3isydvptg60.webp" alt="An evaluator holds a pen over a blue clipboard, ready to write down scores" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo: &lt;a href="https://unsplash.com/@philhearing" rel="noopener noreferrer"&gt;Phil Hearing&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/hand-holding-pen-over-a-blue-clipboard-eXcF6L9pEug" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  A simple hackathon pitch structure
&lt;/h2&gt;

&lt;p&gt;If you want a template, steal this one.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Hello (10 seconds).&lt;/strong&gt; Handshake, how's your day, team intro.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Problem and scope (20 seconds).&lt;/strong&gt; One line each. No essays.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Solution (15 seconds).&lt;/strong&gt; One sentence, plain words.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Demo (most of your time).&lt;/strong&gt; One flow, start to finish, working.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How you built it (30 seconds).&lt;/strong&gt; Your stack, and one hard thing you solved.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What's next (10 seconds).&lt;/strong&gt; One honest line. Then stop talking.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Then let the judge ask questions.&lt;br&gt;
Answer them directly.&lt;br&gt;
"I don't know yet" is a perfectly good answer.&lt;br&gt;
Making something up is not.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hackathon tips for the questions round
&lt;/h2&gt;

&lt;p&gt;Questions are where good teams pull ahead.&lt;/p&gt;

&lt;p&gt;Listen to the whole question.&lt;br&gt;
Answer the question that was asked, not the one you rehearsed.&lt;br&gt;
Let the person who built that part answer it.&lt;br&gt;
Keep answers to a few sentences.&lt;/p&gt;

&lt;p&gt;If a judge points out a flaw, agree if it's true.&lt;br&gt;
Then say how you'd fix it.&lt;br&gt;
That shows judgement, which is exactly what they're measuring.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  How do hackathon judges score projects?
&lt;/h3&gt;

&lt;p&gt;It depends on the event, so read the rules first.&lt;br&gt;
Common criteria are technical difficulty, design, completion and impact.&lt;br&gt;
Most judges weigh what they see working more than what they hear.&lt;/p&gt;

&lt;h3&gt;
  
  
  How long should a hackathon pitch be?
&lt;/h3&gt;

&lt;p&gt;As short as the rules allow.&lt;br&gt;
Aim for under a minute before the demo starts.&lt;br&gt;
Then let the working prototype do the talking.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do you need a perfect product to win a hackathon?
&lt;/h3&gt;

&lt;p&gt;No.&lt;br&gt;
You need one flow that clearly works and clearly fits the problem statement.&lt;br&gt;
Polish that, and be honest about the rest.&lt;/p&gt;

&lt;h2&gt;
  
  
  Go build something
&lt;/h2&gt;

&lt;p&gt;If you're heading into a hackathon, good luck.&lt;br&gt;
Keep it short, keep it focused, and show the thing.&lt;/p&gt;

&lt;p&gt;I build products at &lt;a href="https://www.trackmytech.in" rel="noopener noreferrer"&gt;TrackMy Tech&lt;/a&gt;, and I'm always happy to talk shop.&lt;br&gt;
&lt;a href="https://calendar.rahuldk.in" rel="noopener noreferrer"&gt;Book a call&lt;/a&gt; if you want a second opinion on your idea.&lt;br&gt;
Or read about &lt;a href="https://www.rahuldk.in/blog/the-app-that-arrived-from-2006" rel="noopener noreferrer"&gt;the app that arrived from 2006&lt;/a&gt;, my favourite cautionary tale.&lt;/p&gt;

</description>
      <category>hackathon</category>
      <category>career</category>
      <category>beginners</category>
      <category>startup</category>
    </item>
  </channel>
</rss>
