Skip to content
DevMeme
7323 of 7435
From Building Cool Things to Three-Hour ESLint Standoffs
Tooling Post #8027, on May 26, 2026 in TG

From Building Cool Things to Three-Hour ESLint Standoffs

Why is this Tooling meme funny?

Level 1: The Hall Monitor Problem

A kid signs up for art class dreaming of painting amazing pictures. But the school has a very strict hall monitor who stops him on the way: shoes not tied the approved way, shirt the wrong shade, walking slightly too fast. By the time he's argued through every rule, art class is over — he never touched a paintbrush. The left photo is the kid on day one, grinning about all the cool things he'll make. The right photo is the same kid after three hours with the hall monitor. The joke is that the monitor genuinely exists to keep things neat — but some days, keeping things neat becomes the whole day, and the painting never happens.

Level 2: What's a Linter and Why Is It Yelling

ESLint is the standard linter for JavaScript and TypeScript: a tool that scans your code for problems — real bugs (using an undefined variable) and style choices (semicolons, quote styles, unused imports) — and flags them, often blocking your commit or CI build until fixed. Which rules apply is controlled by configuration files, and that's where the suffering lives:

  • Config files.eslintrc.* or eslint.config.js define active rules. Projects usually extend shared rule sets, stacking several layers whose interactions are hard to trace.
  • Plugins — add-on rule packages for frameworks (React, Vue) or tools (Prettier, TypeScript). Version mismatches between plugins are the classic source of inexplicable errors.
  • "Arguing" — the loop of: change code to satisfy a rule → new rule fires → tweak the config → config syntax error → fix that → original rule somehow back. The tool always has more stamina than you.

The meme's two-panel format ("how it started / how it's going") is the internet's standard before/after structure for dreams meeting reality. For early-career developers the specific disillusionment is real and worth naming: a large fraction of professional programming is not inventing algorithms but negotiating with the assembly line of tooling — linters, formatters, bundlers, CI — that surrounds the actual code. Learning to keep those negotiations short is a skill, and it's mostly learned at hour three.

Level 3: The Tooling Ate the Craft

The casting choice is what elevates this above the average "how it started / how it's going" template. These are Squid Game stills of the same character at two points in his arc: the beaming, naive optimist against the pink wall — "I want to build cool things" — and the gaunt, hollow-eyed, long-haired survivor — "arguing with eslint for 3 hours." The implicit claim is that the distance between those two faces, which in the show is traversed via deadly games and moral collapse, can be covered equally well by a .eslintrc file. Anyone who has spent an afternoon bisecting a plugin conflict will not call this exaggeration.

The three-hour ESLint argument is a specific, reproducible ritual, and the meme's audience knows every station of it. It starts with a red squiggle on perfectly working code. You disagree with the rule, so you check the config — except there are five candidate configs: the legacy .eslintrc.json, the new flat eslint.config.js, the extends chain pulling in airbnb or standard, the framework preset, and the editor's own opinions layered on top. Somewhere in that cascade, two plugins disagree; the TypeScript parser wants one thing, Prettier wants another, and a rule deprecated two majors ago is being re-enabled by a shared company config nobody owns anymore. None of this is building. All of it is mandatory. This is yak shaving in its purest industrial form: each step is locally reasonable, and the sum is a workday gone.

The senior-grade irony is that linters exist to save time — to automate away style debates so humans can focus on the cool things from panel one. And in steady state, on a configured project, they do. The trauma the meme taps is the JavaScript ecosystem's particular failure mode: the meta-work is never finished. Tooling churns (new config formats, plugin major versions, framework migrations), so the argument with ESLint isn't a one-time setup cost — it's a recurring tax with surprise audits. Everyone also knows how the three-hour war actually ends, and it isn't victory:

// eslint-disable-next-line no-unused-vars
const myDignity = null;

The suppression comment is the negotiated ceasefire — technically a defeat, recorded permanently in the codebase for the next archaeologist to find.

Description

A 'how it started / how it's going' two-panel meme using Squid Game stills of actor Lee Jung-jae. Left panel, labeled 'how it started': his character beaming with a wide smile against a pink wall, captioned in red text 'I want to build cool things'. Right panel, labeled 'how it's going': the same character later in the series - gaunt, long-haired, bearded, and hollow-eyed - captioned 'arguing with eslint for 3 hours'. The meme contrasts the idealism of starting a coding career with the soul-grinding reality of fighting linter rules, config files, and tooling instead of actually building anything

Comments

4
Anonymous ★ Top Pick Three hours in, you finally win the argument with ESLint the only way anyone ever has: // eslint-disable-next-line - the technical debt equivalent of paying the ransom
  1. Anonymous ★ Top Pick

    Three hours in, you finally win the argument with ESLint the only way anyone ever has: // eslint-disable-next-line - the technical debt equivalent of paying the ransom

  2. @misesOnWheels 1mo

    EcmaSlop does it again

  3. @achobine 1mo

    I'm actually doing this. Scraping shit with fully vibecoded scripts is fun

  4. @nyxiereal 1mo

    Just use Go

Use J and K for navigation