Each page leads with the verdict, shows a compact comparison table, then gives “pick X when” rules. Versions and prices are checked as of 2026-10-01.

JavaScript tooling

  • Vite vs Webpack: Vite 8 for new projects; Webpack only for loader-bound apps, or move them to Rspack.
  • SWC vs Babel: use the framework’s built-in transform; Babel for the React Compiler and macros.
  • Jest vs Vitest: Vitest for web and library projects; Jest for React Native and large existing suites.
  • ESLint vs Biome: Biome for one-tool lint and format; ESLint plus Prettier for plugin depth.
  • Bun vs Node.js: Node LTS for production compatibility; Bun for an all-in-one toolchain.
  • Yarn vs pnpm: pnpm by default; Yarn 4 only for Plug’n’Play or constraints.
  • Turborepo vs Nx: Turborepo for task caching; Nx for graph, generators, and distributed CI.
  • Monorepo vs Polyrepo: monorepo for code that changes together; polyrepo for separate release cycles.
  • Lodash vs Native JS: native first; a utility library only for merge, debounce, and throttle.

Languages

  • TypeScript vs JavaScript: TypeScript for shared or long-lived code; JavaScript for scripts and prototypes.
  • TypeScript vs Flow: TypeScript for all new work; keep Flow only in existing Flow codebases.
  • Python vs TypeScript: Python for data and ML; TypeScript for web products with shared types.
  • Rust vs Go: Rust for safety and latency-critical cores; Go for services and tooling.

Frontend

Testing and API tools

Data and APIs

  • Postgres vs MySQL: Postgres by default; MySQL for existing fleets or Vitess.
  • MongoDB vs Postgres: Postgres with JSONB for most; MongoDB for document-native data and native sharding.
  • SQLite vs Postgres: SQLite for single-writer apps; Postgres when many processes write.
  • DynamoDB vs Postgres: Postgres by default; DynamoDB for known key access at scale on AWS.
  • Aurora vs RDS Postgres: RDS for cost; Aurora for fast failover, readers, and serverless.
  • Redis vs Memcached: Redis or Valkey for new caches; Memcached for plain key-value caching.
  • Pinecone vs pgvector: pgvector beside relational data; Pinecone for managed vector-only search.
  • Prisma vs Drizzle: Prisma for schema-first workflow; Drizzle for SQL-shaped TypeScript.
  • FastAPI vs Django: FastAPI for typed async APIs; Django for admin, ORM, and auth.
  • REST vs GraphQL: REST by default; GraphQL for client-driven aggregation; tRPC inside one TypeScript repo.
  • JWT vs Session Cookies: opaque server-side sessions for browsers; JWTs for short-lived service claims.
  • OAuth vs JWT: a protocol and a token format; OAuth with PKCE for delegation.

Cloud and infrastructure

AI

  • Claude vs GPT: models and platforms compared; choose by task, cloud, and eval results.
  • Gemini vs Claude: Gemini for multimodal, voice, and cheap Flash tiers; Claude for agents and multi-cloud access.
  • OpenAI SDK vs LangChain: provider SDKs for control; LangChain or LangGraph for portability and durable workflows.
  • Ollama vs llama.cpp: Ollama for easy local models; llama.cpp for control and embedding.

51 items under this folder.