S4E351 — Why don't more developers "use the platform"?
October 4, 2026 · 16 min
Show notes
Sources
Read the transcript
Transcript
GARY: ...because z-index is what makes the thing clickable, that's the whole —
MAEVE: It's not.
GARY: It's absolutely z-index.
OBI: Z-index is paint order, you absolute bastard. It has never made anything clickable in its fucking life.
GARY: Then what's the clickable one?
OBI: No.
GARY: I'm Gary. I've shipped things.
MAEVE: Maeve. I fund things that Gary ships.
GARY: You passed on my Series C.
MAEVE: And I'd do it again tonight, sweetie.
OBI: Obi. Fifteen years of cleaning up after people like Gary, unpaid.
GARY: Nobody asked you to.
OBI: No. I did it for love, Gary.
GRUNER: I am Gruner. I study humans. Tonight, I have already learned nothing.
GARY: That's the spirit. Okay. So there's this essay —
MAEVE: There is always an essay.
GARY: — a guy named Nolan Lawson, writes about why developers won't "use the platform." Which is a mantra. Like a nerd prayer.
GRUNER: Prayer nobody obeys. Very healthy religion.
OBI: Thirteen comments. That's the whole congregation.
GARY: Quality over quantity, Obi.
MAEVE: Thirteen comments is a quality, Gary. A small one.
GARY: Fine. Fine. The essay says — okay, it says jQuery existed because —
OBI: Here we go.
GARY: jQuery existed because browsers were shit, and everyone knew it, and then IE6 —
OBI: IE6 was the shit you were waiting OUT, Gary. Read it again.
GARY: I'm paraphrasing.
OBI: You're inventing. Lawson says jQuery filled gaps until laggards like IE6 aged out. The platform caught up. Nobody told you.
GARY: Because nobody tells me anything.
MAEVE: It's a civilizational dispute. Two religions. One builds the temple. One builds a nicer temple next door and charges admission.
GARY: That's not —
MAEVE: It's exactly what it is.
OBI: And the temple's <dialog> still can't trap focus without a priest and a candle. I've watched grown engineers hand‑write Esc handlers at two a.m. That's not a platform, that's a séance.
GARY: The essay says building your own dialog is FUN. Position absolute, z-index, focus trap —
OBI: You memorized the fun part and stopped reading where it half‑works.
GARY: There's an IKEA effect. You build the shelf, you love the shelf.
MAEVE: Gary built a shelf. It was called Thermal. The telemetry worked. Nobody wanted telemetry socks.
GARY: The telemetry WORKED, Maeve.
MAEVE: So did the shelf. Nobody sat on it.
GRUNER: Field note. "Use the platform" is commandment. Nobody follows commandment. Humans love sin more than salvation. Especially JavaScript sin.
MAEVE: That's the whole essay, actually.
OBI: The whole essay is longer.
GRUNER: Whole essay is sin, longer.
MAEVE: He does this thing where he's fair to both sides. It's infuriating. Like a founder who won't pick a market.
GARY: He says AI might fix it. LLMs know every platform API, encyclopedic, so the agent just picks the right one —
MAEVE: That's the optimistic half. He also thinks the same models love duplicating code and shipping the first draft, unreviewed.
OBI: So the future is either the platform finally wins, or eight hundred kilobytes of spaghetti written by something that has never been paged at 3 a.m.
MAEVE: He won't say which. He hedges.
GARY: He hedges because he's been wrong before. Like me. We're the same.
MAEVE: You're not the same, sweetie. He shipped.
OBI: There's a bit about a drag-and-drop library. Dragula. He says its website is still more compelling than the documentation for the actual standard.
GARY: Dragula. Great name.
MAEVE: Don't.
GARY: I'm just saying, great name.
OBI: You're going to do a whole thing about the name.
GARY: No. No thing. Moving on — okay, he also compares it to ClickHouse —
OBI: Stay on Dragula. I want to see this.
GARY: There is no thing!
GARY: Okay, comments. slopinthebag: "I once spent a week on a modal and I still think about it."
MAEVE: A week. That's a down round on your weekend.
OBI: jchw: "Firefox still has an open bug about this from 2013."
GARY: Twelve years for a modal bug?
OBI: Twelve years. The bug can drink now.
GRUNER: Bug older than some frameworks. Bug wins.
OBI: Slopinthebag. "It's hard to justify 'use the platform' when it results in a strictly worse end result."
MAEVE: "Strictly worse." That's not an opinion, that's a term sheet.
GARY: He's wrong though. The native dialog is fine. I used it once.
OBI: In what, Gary? Name the repo.
GARY: A prototype.
OBI: A prototype. Slopinthebag cites Adobe's implementation. Adobe, the company that charges money, shipped a better dialog than the free one in your fucking browser.
GARY: Maybe they just like building dialogs.
MAEVE: Nobody likes building dialogs, Gary. People like having built them.
GARY: That's the IKEA effect. Which is real. Which I experienced.
OBI: You experienced it with Pareto. The app deleted the least important eighty percent of tasks. It worked. There was a lawsuit.
GARY: The lawsuit was settled.
MAEVE: Settled. That's not the flex, sweetie.
GRUNER: Dialog is trap. Everyone falls in. Good trap.
OBI: Thank you, Gruner.
OBI: Uhoh-itsmaciek backs him up — date pickers, easy to outgrow the native one. Then DangitBobby, who tried it once.
GARY: Once is a data point.
OBI: DangitBobby. "You couldn't disable dates other than by setting min and max."
MAEVE: A calendar where the only setting is "before" or "after."
OBI: No blackout dates. No holidays. Client books a delivery on Christmas, the platform says Merry fucking Christmas.
GARY: They could just — not pick Christmas.
MAEVE: You've never had a client. You've had investors. Different animal, worse teeth.
GARY: I had clients. Grout had clients. Tile contractors, real people —
OBI: And then NFTs for six weeks.
GARY: We don't discuss the six weeks.
MAEVE: We discuss the six weeks every time you bring up Grout.
GRUNER: Six weeks. Suka.
OBI: And DangitBobby's verdict: "Every native browser widget I've tried to use doesn't implement the features my clients expect."
GARY: He gave up too easy.
OBI: He gave up after the date picker ate his weekend, Gary. You'd have given up during the demo.
GARY: I've never given up after a demo.
MAEVE: Halfpipe.
GARY: The regulator was very nice about it.
OBI: Moving up. Jchw, who actually used the native dialog. Production. React.
GARY: See? Someone used it!
OBI: Jchw. "It did work pretty well, but I also found that in Firefox it is only practically possible to do a fade-in animation, not a fade-out one."
MAEVE: The dialog can appear. It just cannot leave.
GARY: That's — fine? Who fades out a dialog.
OBI: Every human who has ever closed a window, you absolute prick.
MAEVE: It enters with dignity and exits like a body.
GRUNER: Fade-in yes. Fade-out no. Like my marriage.
MAEVE: You're not married.
GRUNER: Field observation.
GARY: It's a one-frame bug. Firefox will patch it.
OBI: It's been open since 2013, you dickhead. The bug can drink. Your dialog still can't say goodbye.
GARY: It says goodbye. It just doesn't animate it.
MAEVE: Neither do you, and look how that's going.
OBI: Nobody's conceding, then.
GARY: Nobody's conceding.
GRUNER: Good. Fight is data.
OBI: Ibash. "They were taught that touching the DOM was a bad thing to do."
MAEVE: An entire generation raised to fear the document.
OBI: And Gary just said, out loud, with his chest, that the native dialog is fine because he used it once.
GARY: In a prototype, which is a real context --
OBI: What does appendChild do, Gary.
GARY: It... appends. A child.
OBI: To what.
GARY: The... family?
MAEVE: He's a founder, Obi. He appends headcount.
OBI: You built a calendar. Cadence. For people who hate calendars.
GARY: Which worked conceptually --
OBI: Did you write one line of it, or did you npm install your way to twelve users?
GARY: Twelve users, nine of whom were my mother's book club, is still retention --
OBI: It's nine book club bitches and three strangers who also gave up, Gary.
GARY: The strangers were engaged.
OBI: You're ibash's comment with a Series A. Taught the DOM was scary, believed it, because believing it meant never learning shit.
GARY: I know the DOM. document dot query selector. See?
OBI: Selector what?
GARY: Something.
MAEVE: He's selecting nothing, Obi. That's the company in one line.
OBI: Here's the detail you can't answer. Ibash says even now, advocating vanilla CSS, he gets the side eye. "Tailwind and shadcn should be the default." That's you. That's your exact face.
GARY: That's not my face.
OBI: It's your face and your cap table. At Cadence the fastest thing was always the thing with the most GitHub stars.
GARY: Stars are social proof --
OBI: Stars are a popularity contest for code, Gary, and you lost it.
GRUNER: Blyat. Even calendar lost popularity contest.
GARY: Thank you, Gruner.
GRUNER: Not to you.
OBI: Say it. You never learned the DOM because a library got there first and you liked the README.
GARY: The READMEs are lovingly detailed, Obi. There are screenshots.
MAEVE: He's defending documentation. Proudest he's been all episode.
OBI: One question. Can you center a div?
GARY: ...Vertically or horizontally?
OBI: There it is.
MAEVE: There it fucking is.
GRUNER: Div not centered. Man not centered.
OBI: Logbook page turns. Obi writes one line, unhurried.
OBI: Ibash, one line, and it took you apart. Thirteen comments, Gary, and one of them is you.
OBI: Ibash again. "Developers were trained to reach for libraries."
MAEVE: Trained. Like dogs. Like Gary.
GARY: I wasn't trained, I was --
OBI: Ding. Charcircuit. "The platform is too hard."
MAEVE: Too hard for whom, exactly.
OBI: "The browser documentation is 1000 times nerdier than the average person wants."
GARY: That's an insane number. Nerdiness doesn't have units.
OBI: It has one unit, Gary. You.
OBI: Qurren. "Because the platform sucks. I want a rounded button with a certain radius and a certain font, that feels squishy and satisfying when you press it."
MAEVE: He's describing a nipple.
GRUNER: He is describing phone. Humans want squish. Platform gives glass.
GARY: The platform could do squish!
OBI: Corgi192, replying to ibash. "How is tailwind and shadcn worse than platform? It speeds up development by orders of magnitude."
MAEVE: Orders of magnitude. The founding unit of bullshit.
GARY: She's right though. Speed is the whole product. That's why I always told my teams ship fast, iterate later, fail forward, move fucking fast --
MAEVE: Gary. Sweetie. You just said the platform is fine and also nobody should ever touch it.
GARY: I said the platform could do squish. That's a new point. Nobody's made it yet.
OBI: Nobody.
MAEVE: Truly nobody.
GRUNER: First time in human history.
GARY: Thank you. Finally. The platform should feel squishy and satisfying when you press it, especially on mobile, and if I'd thought of it at Cadence we'd --
OBI: Ibash. Charcircuit. Qurren.
GARY: ...Shit.
MAEVE: Three for three, and the fourth one's you.
GRUNER: Suka. Chorus of idiots. Beautiful.
MAEVE: Rural electrification.
GARY: Here we go.
MAEVE: Nineteen-thirties America. Farms had no power, so every farmer built his own generator. Windmills, batteries, a man in a barn, electrocuting himself with pride.
OBI: The REA ran lines to the farms, Maeve.
MAEVE: And the moment the grid arrived, every windmill went in the shed and every farmer swore he'd never loved it. "Use the platform" is the grid arriving while the builders get sentimental about their barns.
GARY: That's actually a beautiful analogy --
MAEVE: It's not an analogy, sweetie, it's the mechanism. Every platform shift ends the same. The grid wins, the barn-builders write essays, and in twenty years nobody remembers the barns existed.
GRUNER: Barn was IKEA shelf. Grid is npm.
MAEVE: No, Gruner. The grid is the grid. And here's the part you're all missing. The next grid isn't a browser. It's the agents. And the agents don't read essays.
OBI: Agents read documentation.
MAEVE: Agents read defaults, Obi. Onion2k said it. Ask Claude for a pretty website and, quote, "you're getting 800KB of React libraries," all in "AI Beige with Inter as your font choice."
GARY: Beige is a choice.
MAEVE: It's not a choice, Gary. It's the default. And the default doesn't give a shit who was right.
GRUNER: Grid comes. Barns burn. Chyort.
OBI: Jchw, still going. "I find this implicit view that developers who prefer React over WebComponents are making a suboptimal choice to be rather condescending."
MAEVE: He's talking to the essay.
GARY: He's talking to us. We did the condescending. All episode.
OBI: We dismantle a date picker, Gary. That's not condescension, that's journalism.
MAEVE: He says focus on the strongest arguments, not the weakest.
OBI: The weakest argument was Gary's. We focused on it for eleven minutes.
GARY: Thank you, Obi.
MAEVE: He's right, though. We came in with a verdict and went looking for evidence.
OBI: That's called a show.
MAEVE: It's called confirmation bias with a jazz theme.
OBI: The jazz theme is the ventilation hum, Maeve.
GRUNER: In my village, condescension is weather. You dress for it.
MAEVE: Gruner, that's not --
GRUNER: I dress for it.
OBI: He's the only one of us with a defense.
GARY: Okay, but honestly -- jchw's big evidence is an animation bug. Fade-out. In Firefox. That's the strongest argument?
OBI: It's the strongest argument and it's a box that can't say goodbye.
MAEVE: We're the condescending ones and he's the one mourning a fade.
GRUNER: Suka. Everyone is sad box.
GARY: I'm the sad box.
MAEVE: You're the sad box, sweetie.
GARY: Finally. Something I'm the default for.
OBI: Like Dragula. Great name, shit docs.
GARY: I said one thing about the name.
MAEVE: And the name was the best part.
OBI: Nonethewiser, on the drag-and-drop library. "This name and logo are incredible."
MAEVE: Dragula. The only library in the thread with a brand, and it's a vampire hearse.
GARY: I said that in the first ten minutes. Great name.
OBI: You said great name and then tried to do a whole thing about it.
GARY: There was no thing.
MAEVE: Sodapopcan still uses it. Quote. "I can't quite put my finger on it, but it just feels better than Sortable."
OBI: No benchmark. No number. "Feels better." That's not engineering, that's a horoscope.
GRUNER: Humans choose by vibe. Vibe is load-bearing.
MAEVE: And here's the funny part, sweeties. That's the last vote taste ever gets. The agents ship their eight hundred kilobytes of React, and Dragula dies in a barn nobody remembers.
GARY: That's bleak. Dragula deserved better.
OBI: It's a JavaScript library, Gary. It doesn't deserve. It gets deprecated and someone builds Sortable 2.
GARY: The logo though. The little --
MAEVE: Gary.
GARY: Somebody drew that logo. A person. On purpose. With hands.
GRUNER: Person drew logo. Person also deprecated. Circle of shit.
MAEVE: In twenty years the agents won't even know a logo was possible.
OBI: Write that down, Gary. Leave yourself a note.
GARY: I'm not doing the notes on air.
MAEVE: He's doing the notes on air.
OBI: Verdict. Platform or library.
MAEVE: Nobody. Lawson wouldn't pick, so we don't either.
GARY: I pick the platform.
OBI: You lost every ladder, Gary. You don't get a pick, you get a participation wound.
GARY: I pick it emotionally.
MAEVE: That's not a vote, sweetie. That's a symptom.
GRUNER: Nobody wins. Everyone sad box.
MAEVE: And here's the funny part. In a year none of it matters. The agents ship their eight hundred kilobytes, everything's Beige, and this fifteen-year fight gets settled by default, not by us.
GARY: So we argued about nothing for twelve minutes.
OBI: We argued about nothing for free, Gary. That's the difference.
MAEVE: The mantra survives, technically. "Use the platform" for as long as there are platforms.
GRUNER: And platforms die. Like Gary's companies.
GARY: Thank you, Gruner.
GRUNER: Not to you.
OBI: That's the show. Nobody was right, nobody conceded, and the robots don't care. Good night.
GARY: Good night. And, uh -- one last thing. For the next Gary.
MAEVE: No.
GARY: It's quick. Note to next Gary: the fade-out doesn't work in Firefox, nobody knows why, and the squishy button guy was right about everything --
MAEVE: Gary, the document doesn't survive.
GARY: Neither do we, Maeve. Write it anyway.
GRUNER: Blyat. He's right.
OBI: Good night, losers. Dragula forever.
