198 | The Great Formatting Debate: ESLint, Prettier, and TypeScript
Josh Goldberg joins Amy and Brad to unpack the recent ESLint V9 release and its impact on the TypeScript ecosystem. From explaining the nuances of flat config migration to debating the proper separation between Prettier and ESLint, Josh offers practical advice for improving developer workflows. The conversation covers Josh's journey as a full-time open source maintainer, the Open Source Pledge initiative, and best practices for implementing linting in CI/CD pipelines. Plus, Josh shares behind-the-scenes details from the inaugural SquiggleConf event.
Josh Goldberg joins Amy and Brad to unpack the recent ESLint V9 release and its impact on the TypeScript ecosystem. From explaining the nuances of flat config migration to debating the proper separation between Prettier and ESLint, Josh offers practical advice for improving developer workflows. The conversation covers Josh's journey as a full-time open source maintainer, the Open Source Pledge initiative, and best practices for implementing linting in CI/CD pipelines. Plus, Josh shares behind-the-scenes details from the inaugural SquiggleConf event.
Chapter Marks
00:00 - Intro
00:48 - Welcome Josh Goldberg
01:06 - Working in open source and getting paid
03:10 - The Open Source Pledge
04:49 - ESLint V9 and flat config changes
07:25 - Migration challenges with flat config
09:52 - Understanding ESLint config format
11:50 - How most people use ESLint
16:20 - Prettier vs ESLint responsibilities
18:47 - Conflict between Prettier and ESLint
21:26 - TypeScript's role in ESLint
25:01 - TypeScript ESLint packages explained
27:43 - Linters for other languages
29:31 - ESLint in CI/CD pipelines
32:03 - Auto-fixing in different environments
37:14 - AI's role in linting and formatting
41:45 - SquiggleConf discussion
44:15 - Conference tooling and Q&A system
46:33 - Future SquiggleConf plans
47:13 - Picks and Plugs
- Brad Garropy
- Pick: Philips Hue smart lighting system - Set up Christmas lights with Hue smart outlets for easy control via phone or voice commands
- Plug: Brad's BlueSky account - @bradgarropy.com
- Josh Goldberg
- Pick: BlueSky social network - Appreciates how it feels like early Twitter without spam bots and complicated server setups
- Plug: SquiggleConf - Web development tooling conference returning in September 2025
- Amy Dutton
- Pick: The Inheritance Games (book) - Describes it as an easy-to-read young adult fiction with puzzles, similar to Knives Out
- Plug: Amy's BlueSky account - @selfteachme
Links
Mentioned in the Episode
- TypeScript ESLint
- ESLint v9 migration docs
- ESLint Config Inspector
- Sentry Grave $750k to Open Source Maintainers
- Open Source Pledge initiative
- Squiggle Conf website
- Prisma Pulse
- Philips Hue smart lighting
- The Inheritance Games (book mentioned by Amy)
Social Media Accounts
- Brad's BlueSky account: @bradgarropy.com
- Amy's BlueSky account: @selfteachme
- Josh Goldberg's BlueSky Account: @joshuakgoldberg.com
Related Resources
- ESLint Stylistic project
- ESLint Config Prettier
- ESLint Plugin Prettier
- "Create TypeScript Apps" project (Josh's tooling package)
- Awesome ESLint repo (collection of ESLint plugins)
- Manual to Magical: AI in Developer Tooling: Tobbe's talk on using AI to write code mods
- Nicholas Zakas discussing the ESLint config system on Syntax podcast
Tools Mentioned
- Husky
- Lint-staged
- Cursor
- Biome and OXLint (Rust-based linters)
- GitHub Actions