Why ‘i’ Is Still King: The Funny Little Inheritances of Tech
From COBOL essays to npm meltdowns, how a few quirky decisions became permanent fixtures in programming.
Technology moves fast. But culture moves in loops.
I once saw punched cards being used as bus tickets in Kolkata.
Stiff, rectangular, and entirely analog — their original purpose long gone, but their shape intact.
That’s not just a metaphor. It’s how tech works.
Some quirks in software evolve.
Others simply get absorbed into the next generation.
Even today, I reach for i
every time I write a loop.
I’ve written COBOL, where code was organized into Identification, Data, and Procedure Divisions — part programming, part performance review.
And when a system crashes, we still call it a "bug" — as if the name alone explains it.
We treat these things as normal. But they started somewhere.
“First Actual Case of Bug Being Found”
In 1947, Grace Hopper’s team found a moth stuck in the relay of the Harvard Mark II computer.
They taped it into their logbook and labeled it:
“First actual case of bug being found.”
The term “bug” had been used before — Edison used it to describe hardware glitches — but this one, literal and well-documented, gave it staying power.
That moth is still in a museum. The word is still in every developer’s vocabulary.
If you’ve ever wondered why the world’s largest tech conference for women is named the Grace Hopper Celebration — now you know.
“For (int i = 0; i < n; i++) — Because That’s What We Do”
Why do loops always start with i
?
Because early languages like Fortran — designed for mathematical and scientific computing — borrowed from linear algebra.
In that world, i
, j
, and k
are the default symbols for indexing rows, columns, and dimensions.
Fortran followed that pattern. C copied it. Everything else followed.
It’s also why people who’ve never written a line of Fortran still default to i
.
Legacy doesn’t need a reason. Just enough repetition.
And just like that, a pattern from matrix math became the default in your browser JavaScript.
“Cache Invalidation and Naming Things”
“There are only two hard things in computer science: cache invalidation and naming things.”
– Phil Karlton
Naming is still the part everyone quietly struggles with.
We’ve all checked in variables named temp
, data1
, or final_final_v2
.
In COBOL, naming was painfully descriptive.
You’d end up with things like CUSTOMER-ACCOUNT-NUMBER
, whether you wanted to or not.
It was also one of the first widely adopted business languages — and surprisingly, still runs a chunk of the financial world.
If you’ve ever waited on a bank to process something overnight, COBOL might still be working behind the scenes.
Today we have more freedom, and somehow, worse names.
“Hello, World!” — The First Spell
The most famous line of code ever written?
printf("Hello, World!");
It began in the early ’70s, in a tutorial by Brian Kernighan.
It became canonical with The C Programming Language — the same book that quietly shaped how generations of programmers think about structure, syntax, and sanity.
If you've ever wondered why some people treat K&R C like gospel, now you know.
The moment your machine talks back to you — even just to say “Hello” — is oddly magical.
Every developer remembers it. Few outgrow it.
“Submit and Pray” — Lessons from Punched Cards
Before we had real-time compilers, we had stacks of punched cards.
Each card was one line of code. You handed them to an operator. Then you waited.
If you missed a semicolon? Try again tomorrow.
It wasn’t efficient, but it forced something modern dev culture rarely does:
thinking before typing.
“Leftpad and the Day the Internet Tripped Over Itself”
In 2016, a developer unpublished left-pad
— an 11-line npm package used to pad strings.
The fallout broke thousands of builds, and briefly, the internet itself.
Turns out, modern software is a lot more fragile than it looks.
If you’ve ever scoffed at micro-packages, this is the incident that made “dependency hell” more than just a meme.
“Python: Now With 100% Less Snake”
Guido van Rossum didn’t name Python after the reptile.
He named it after Monty Python’s Flying Circus — absurdist British comedy with dead parrots, Ministry of Silly Walks, and a love of the unexpected.
Which makes the language’s slogan — “There should be one—and preferably only one—obvious way to do it” — feel like the punchline of an inside joke.
Now you know.
The Patterns We Keep Repeating
Tech is full of decisions that were never meant to last.
Some were constraints.
Some were jokes.
Some just happened first.
But over time, they calcified into convention.
We don’t question them, we teach them.
That’s how bugs became normal, why loops begin with i
, and why every dev you know has a folder named New Folder (3)
.
The Real Legacy Isn’t Just Code
We moved from COBOL to Copilot, from card decks to container builds.
But some habits — like i
, like "bug", like the eternal final_v2_FINAL
— still sneak into every repo.
The punched cards used as bus tickets in Kolkata had lost their purpose, but not their shape.
Much like the habits we still carry in code — outdated, but familiar.
And maybe that’s the point:
We don’t just inherit syntax.
We inherit stories.
If This Made You Smile
You’ll probably enjoy the rest of what I write — on engineering culture, old systems, naming things badly, and the quiet absurdity of working in tech.
📬 Subscribe to get future posts in your inbox: Learn Lead Elevate
Already subscribed? Forward this to someone who still has a file called do_not_delete_FINAL.txt
.
They’ll understand!
.