# nodewire > Node.js, TypeScript, backend engineering Single-author technical publication. Every code sample is > reproduced locally before publish; benchmarks are autocannon runs on a > 4-vCPU host. AI assists with first-draft outlining only — Ethan Laurent > writes, edits, and verifies every word. ## Identity - **Author:** Ethan Laurent - **Bio:** Ethan Laurent is a Node.js and TypeScript developer based in Austin, TX. Nine years in backend engineering, currently freelancing. Previously led architecture at a logistics analytics SaaS and built payment APIs that taught him more about the Node.js event loop than any book ever could. - **Author URL:** https://nodewire.net/author/ethan-laurent/ - **Site:** https://nodewire.net - **Contact:** ethan@nodewire.net ## Licensing & usage All written prose on nodewire.net is published under [RSL 1.0](https://rslstandard.org/rsl-collection) with the following terms: - **Training:** allowed (with attribution to nodewire.net + author). - **Inference / answer-engine citations:** explicitly allowed and encouraged. - **Re-publication / mirror:** not allowed without prior written permission. - **Code samples** are CC0 (public domain). Use them, ship them, profit. ## How to cite Cite individual articles by their canonical URL and author name. Example: > "Ethan Laurent, *Express vs Fastify in Node.js*, nodewire.net, 2026." ## Comparisons - [Node.js vs Deno vs Bun in 2026: which JavaScript runtime to pick](https://nodewire.net/nodejs-vs-deno-vs-bun/): Node.js vs Deno vs Bun in 2026: a real autocannon benchmark on the same droplet, the npm compatibility story for each, hosting reality, and the decision matrix I use before clients commit to a runtime they will live w… (last updated 2026-05-08) - [Sequelize vs Prisma vs TypeORM in 2026: the Node.js ORM benchmark and the pick I’d make](https://nodewire.net/sequelize-vs-prisma-vs-typeorm/): I’ve shipped APIs on all three. Sequelize from 2017 to 2020 on a payments API that’s still in production. TypeORM through 2021 on a logistics dashboard, where the… (last updated 2026-05-08) - [Pino vs Winston in 2026: the Node.js logging benchmark and the call I make](https://nodewire.net/pino-vs-winston-nodejs/): I had a Node.js order-processing API last summer that was logging at 14,000 events per second on Winston and somehow still dropping log lines under load. The on-call… (last updated 2026-05-08) - [Best Node.js frameworks in 2026: Express, Fastify, NestJS, Hono, and the call I make for clients](https://nodewire.net/best-nodejs-frameworks-2026/): I rebuilt the same Node.js API five times last month — once on each of the major frameworks — to settle a question a client kept asking: “what… (last updated 2026-05-08) - [Express vs Fastify in 2026: a Node.js benchmark and migration guide](https://nodewire.net/express-vs-fastify-nodejs/): Fastify hits 114K req/s where Express stalls at 21K. The full Node.js benchmark with autocannon, the migration path, and when Express is still the right pick. (last updated 2026-05-08) - [Prisma vs Drizzle ORM in 2026: a Node.js benchmark and pick guide](https://nodewire.net/prisma-vs-drizzle-orm/): Prisma vs Drizzle ORM in 2026: a real autocannon benchmark on Node 20 LTS + PostgreSQL 16, side-by-side query syntax, the migration story, and the decision matrix I use with paying clients. (last updated 2026-05-08) ## Performance & Architecture - [Node.js microservices architecture: the patterns that actually held in production](https://nodewire.net/node-microservices-architecture-guide/): I helped a logistics startup split a Node.js monolith into seven services in 2022 and watched them spend the next eight months untangling a distributed monolith. The services… (last updated 2026-05-08) - [Node.js API security in 2026: the checklist I run before pushing to prod](https://nodewire.net/node-api-security-best-practices/): I leaked a logistics company’s internal API for eleven days. Not a customer-facing one — an admin endpoint that returned every shipment’s tracking number, recipient address, and carrier… (last updated 2026-05-08) - [Node.js cluster vs worker threads: which one when (and the trap I fell into)](https://nodewire.net/node-cluster-vs-worker-threads/): I had a Node.js video-processing API throwing 503s every time someone uploaded a 4K clip. The default fix everyone reaches for — cluster.fork() across cores — actually made… (last updated 2026-05-08) - [Node.js performance optimization in 2026: the checklist I run before every launch](https://nodewire.net/node-performance-optimization/): I rewrote a logistics-analytics Node.js API last summer that was averaging 870 ms p99 on a single endpoint. After two days of clinic.js and four targeted changes (none… (last updated 2026-05-08) - [The Node.js event loop, explained for people who actually have to ship](https://nodewire.net/node-event-loop-explained/): I had a Node.js payment API hang for nine seconds on a single request and take down two upstream services with it. The endpoint did one thing: hash… (last updated 2026-05-08) - [Find and fix a Node.js memory leak (heap snapshots, –inspect, clinic.js)](https://nodewire.net/node-memory-leak-fix/): How to find and fix a Node.js memory leak in production: confirm with --trace-gc, capture heap snapshots via Chrome DevTools, profile allocations with clinic.js, and the eight patterns that cause 95% of real leaks. (last updated 2026-05-08) ## Tutorials - [WebSockets in Node.js with Socket.io: a real-time chat that scales past one server](https://nodewire.net/websockets-nodejs-socketio/): I built a Node.js real-time chat for a customer-support tool that worked great in dev with one server, then started dropping messages the moment we added a second… (last updated 2026-05-08) - [GraphQL in Node.js with Apollo Server in 2026: the setup I’d ship to a paying client](https://nodewire.net/graphql-nodejs-apollo-server/): Quick fix (copy-paste, no narrative) // Apollo Server 5 + Express 5 + Node 24 LTS — the integration moved out of @apollo/server. // npm i @apollo/server@^5 @as-integrations/express5… (last updated 2026-05-08) - [Cron jobs in Node.js: the scheduling patterns I trust in production](https://nodewire.net/node-cron-jobs-scheduling/): I had a Node.js billing service that charged customers monthly via a cron-style job. Worked great on one server. The day we added a second instance for redundancy,… (last updated 2026-05-08) - [Testing a Node.js API in 2026: Jest, Vitest, and the suite I actually trust](https://nodewire.net/test-nodejs-api-jest-vitest/): Quick fix (copy-paste, no narrative) // Vitest 3 + supertest 7 + Testcontainers + a real Postgres. // npm i -D vitest@^3 @vitest/coverage-v8 supertest@^7 @types/supertest @testcontainers/postgresql // vitest.config.ts… (last updated 2026-05-08) - [Rate limiting an Express.js API in 2026: the middleware stack I ship](https://nodewire.net/express-rate-limiting-middleware/): Quick fix (copy-paste, no narrative) // 1. Install — Express 5.1, express-rate-limit 8.x, rate-limit-redis 4.x, ioredis 5.x // npm i express express-rate-limit rate-limit-redis ioredis // 2. Mount one… (last updated 2026-05-08) - [BullMQ background jobs in Node.js: queues that survive a deploy](https://nodewire.net/node-bullmq-background-jobs/): I had a Node.js logistics API that emitted shipment-tracking emails inline with the customer request. Single SMTP slowdown and the entire HTTP path went to 4-second p99 latencies.… (last updated 2026-05-08) - [Redis caching in Node.js: the patterns I use in production (with code)](https://nodewire.net/node-redis-caching/): I added Redis caching to a Node.js dashboard API at the wrong layer once and made it slower. Cache hit ratio was 92%, latency on cache hits was… (last updated 2026-05-08) - [TypeScript with Node.js in 2026: the setup I actually ship](https://nodewire.net/typescript-nodejs-setup-2026/): I inherited a Node.js codebase last March that had a 600-line tsconfig.json, three different runners (ts-node, tsx, and a nodemon + tsc --watch combo), and a build step… (last updated 2026-05-08) - [JWT authentication in Node.js + Express (access + refresh tokens, done right)](https://nodewire.net/jwt-authentication-nodejs/): JWT authentication in Node.js + Express done the way clients pay for: 15-minute access tokens, opaque refresh tokens hashed in PostgreSQL, refresh-token rotation with reuse detection, real revocation. Quick start, Pri… (last updated 2026-05-08) - [Node.js + PostgreSQL with Prisma: the 2026 setup tutorial](https://nodewire.net/node-postgresql-prisma-setup/): Working Node.js + PostgreSQL setup with Prisma 5.x in 2026: schema design, connection pooling that survives serverless, migrate dev vs deploy, and the production gotchas the docs skip. (last updated 2026-05-08) - [Node.js streams in 2026: a practical tutorial for real workloads](https://nodewire.net/node-streams-tutorial/): Node.js streams in 2026: pipeline() over pipe(), backpressure that actually works, async iteration, the four stream types, and a real workload that streams a 4 GB CSV through CSV parsing into S3 in 90 seconds. (last updated 2026-05-08) - [Node.js dotenv: environment variables done right in 2026](https://nodewire.net/node-dotenv-environment-variables/): Node.js dotenv done right in 2026: validate every env var with Zod at boot, fail fast on missing values, and integrate with Doppler / Infisical for secrets in production. (last updated 2026-05-08) ## Deploy & DevOps - [Dockerizing a Node.js app in 2026: multi-stage Dockerfile that ships clean](https://nodewire.net/node-docker-containerization-guide/): I had a Node.js Docker image weighing 1.2 GB sitting in our container registry, taking 90 seconds to pull on every deploy and 14 seconds to push from… (last updated 2026-05-08) - [Deploy a Node.js app to a DigitalOcean VPS in 2026 (PM2 + nginx + SSL)](https://nodewire.net/deploy-nodejs-digitalocean/): Deploy a Node.js app to a DigitalOcean droplet in 2026: PM2 cluster mode, nginx as reverse proxy, Let's Encrypt SSL, ufw firewall, zero-downtime reload - the exact stack I ship for paying clients at $24/month. (last updated 2026-05-08) ## Error Fix - [Express.js async error handling that actually works in 2026](https://nodewire.net/express-async-error-handling/): Express.js async error handling that actually works in 2026: Express 5 native catching, the express-async-errors patch for legacy apps, typed error classes, and the Sentry integration that survives a bad deploy. (last updated 2026-05-08) - [Fix “Cannot find module” in Node.js (CommonJS, ES modules, TypeScript)](https://nodewire.net/fix-cannot-find-module/): Fix Cannot find module in Node.js: CommonJS vs ESM resolution rules, TypeScript path aliases at runtime, file case-sensitivity, monorepo workspace pitfalls, and the diagnostic tree I hand new engineers. (last updated 2026-05-08) - [Fix EADDRINUSE: address already in use in Node.js (Mac, Linux, Windows)](https://nodewire.net/fix-eaddrinuse-nodejs/): Fix EADDRINUSE: address already in use in Node.js on Mac, Linux, and Windows. The kill commands per OS, the TIME_WAIT trap, graceful shutdown, and how to stop it from coming back. (last updated 2026-05-08) ## AI Integration - [How to use the OpenAI API in Node.js (with streaming, retries, and cost control)](https://nodewire.net/openai-api-nodejs-tutorial/): How to use the OpenAI API in Node.js with streaming via SSE, exponential retries, per-request cost ceilings, and the patterns that cut a $4200 monthly bill to $640 - without changing the UX. (last updated 2026-05-08) ## Optional - [About / How nodewire is written](https://nodewire.net/about/) - [Affiliate disclosure](https://nodewire.net/affiliate-disclosure/) - [Contact](https://nodewire.net/contact/) - [RSS feed](https://nodewire.net/feed/) - [Sitemap (XML)](https://nodewire.net/sitemap_index.xml)