<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>#nodejs · Faiz Ahmed Farooqui</title><description>Posts tagged nodejs.</description><link>https://faizahmed.in/</link><item><title>Three Error Shapes, One API: Adopting RFC 9457 Problem Details</title><link>https://faizahmed.in/rfc-9457-problem-details-api-errors/</link><guid isPermaLink="true">https://faizahmed.in/rfc-9457-problem-details-api-errors/</guid><pubDate>Fri, 21 Aug 2026 07:30:00 GMT</pubDate><category>api</category><category>rest</category><category>nestjs</category><category>nodejs</category><category>http</category></item><item><title>Key Rotation Without Downtime: Never Generate a Key in a Migration</title><link>https://faizahmed.in/jwt-key-rotation-without-downtime/</link><guid isPermaLink="true">https://faizahmed.in/jwt-key-rotation-without-downtime/</guid><pubDate>Fri, 21 Aug 2026 04:00:00 GMT</pubDate><category>postgresql</category><category>key-management</category><category>jwks</category><category>security</category><category>nodejs</category></item><item><title>Append-Only Audit Logs in Postgres: Your Trigger Misses TRUNCATE</title><link>https://faizahmed.in/append-only-audit-log-postgres-hash-chain/</link><guid isPermaLink="true">https://faizahmed.in/append-only-audit-log-postgres-hash-chain/</guid><pubDate>Thu, 20 Aug 2026 10:00:00 GMT</pubDate><category>postgresql</category><category>audit-log</category><category>security</category><category>compliance</category><category>nodejs</category></item><item><title>Nested JWTs in Node.js: Decrypting a Token Is Not Verifying It</title><link>https://faizahmed.in/nested-jwts-nodejs-decrypt-is-not-verify/</link><guid isPermaLink="true">https://faizahmed.in/nested-jwts-nodejs-decrypt-is-not-verify/</guid><pubDate>Tue, 11 Aug 2026 09:30:00 GMT</pubDate><category>jwt</category><category>jwe</category><category>jose</category><category>nodejs</category><category>nestjs</category><category>security</category></item><item><title>Building an MCP Server in TypeScript</title><link>https://faizahmed.in/building-mcp-server-typescript/</link><guid isPermaLink="true">https://faizahmed.in/building-mcp-server-typescript/</guid><pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate><category>ai-engineering</category><category>typescript</category><category>mcp</category><category>nodejs</category></item><item><title>Rate Limiting: Token Bucket vs Sliding Window</title><link>https://faizahmed.in/rate-limiting-token-bucket-sliding-window-nodejs/</link><guid isPermaLink="true">https://faizahmed.in/rate-limiting-token-bucket-sliding-window-nodejs/</guid><pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate><category>nodejs</category><category>scaling</category><category>rate-limiting</category><category>redis</category></item><item><title>Postgres as a Queue with SKIP LOCKED</title><link>https://faizahmed.in/postgres-queue-skip-locked/</link><guid isPermaLink="true">https://faizahmed.in/postgres-queue-skip-locked/</guid><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate><category>postgresql</category><category>nodejs</category><category>queues</category><category>scaling</category></item><item><title>Connection Pooling: Node.js, Postgres, PgBouncer</title><link>https://faizahmed.in/connection-pooling-nodejs-postgres-pgbouncer/</link><guid isPermaLink="true">https://faizahmed.in/connection-pooling-nodejs-postgres-pgbouncer/</guid><pubDate>Thu, 02 Jul 2026 00:00:00 GMT</pubDate><category>postgresql</category><category>nodejs</category><category>scaling</category><category>performance</category></item><item><title>Row-Level Security for Multi-Tenant SaaS in Postgres</title><link>https://faizahmed.in/row-level-security-multi-tenant-saas-postgres/</link><guid isPermaLink="true">https://faizahmed.in/row-level-security-multi-tenant-saas-postgres/</guid><pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate><category>postgresql</category><category>multi-tenancy</category><category>security</category><category>nodejs</category></item><item><title>The Outbox Pattern: Reliable Events Without 2PC</title><link>https://faizahmed.in/outbox-pattern-reliable-events-without-2pc/</link><guid isPermaLink="true">https://faizahmed.in/outbox-pattern-reliable-events-without-2pc/</guid><pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate><category>outbox</category><category>microservices</category><category>postgresql</category><category>nodejs</category><category>reliability</category></item><item><title>Designing Webhooks: Delivery, Retries, Signatures</title><link>https://faizahmed.in/designing-webhooks-delivery-retries-signature-verification/</link><guid isPermaLink="true">https://faizahmed.in/designing-webhooks-delivery-retries-signature-verification/</guid><pubDate>Sun, 28 Jun 2026 00:00:00 GMT</pubDate><category>webhooks</category><category>fintech</category><category>nodejs</category><category>reliability</category><category>security</category></item><item><title>Idempotency Keys: How Stripe-Style APIs Prevent Double Charges</title><link>https://faizahmed.in/idempotency-keys-prevent-double-charges/</link><guid isPermaLink="true">https://faizahmed.in/idempotency-keys-prevent-double-charges/</guid><pubDate>Sat, 27 Jun 2026 00:00:00 GMT</pubDate><category>api</category><category>fintech</category><category>nodejs</category><category>postgresql</category><category>reliability</category></item><item><title>How I Actually Use AI to Ship Code: Context Engineering Over Clever Prompts</title><link>https://faizahmed.in/how-i-use-ai-to-ship-code/</link><guid isPermaLink="true">https://faizahmed.in/how-i-use-ai-to-ship-code/</guid><pubDate>Wed, 24 Jun 2026 10:00:00 GMT</pubDate><category>ai</category><category>productivity</category><category>nodejs</category></item><item><title>The HTTP QUERY Method: GET With a Body, in Node.js and NestJS</title><link>https://faizahmed.in/http-query-method-nodejs-nestjs/</link><guid isPermaLink="true">https://faizahmed.in/http-query-method-nodejs-nestjs/</guid><pubDate>Tue, 23 Jun 2026 16:00:00 GMT</pubDate><category>nodejs</category><category>nestjs</category><category>api</category><category>http</category><category>typescript</category></item><item><title>Using AI Without Leaking Your Secrets: A Threat Model for AI-Assisted Development</title><link>https://faizahmed.in/using-ai-without-leaking-secrets/</link><guid isPermaLink="true">https://faizahmed.in/using-ai-without-leaking-secrets/</guid><pubDate>Tue, 23 Jun 2026 10:00:00 GMT</pubDate><category>ai</category><category>security</category><category>nodejs</category><category>aws</category><category>secrets</category></item><item><title>Loading Secrets at Runtime Without Leaking Them: config(), the Keystore, and run</title><link>https://faizahmed.in/secret-keystore-runtime-config-loader-nodejs/</link><guid isPermaLink="true">https://faizahmed.in/secret-keystore-runtime-config-loader-nodejs/</guid><pubDate>Fri, 12 Jun 2026 13:17:21 GMT</pubDate><category>aws</category><category>nodejs</category><category>security</category><category>devops</category><category>backend</category></item><item><title>Encrypt Your .env with One Command: The secret-keystore CLI</title><link>https://faizahmed.in/secret-keystore-cli-encrypt-env-aws-kms/</link><guid isPermaLink="true">https://faizahmed.in/secret-keystore-cli-encrypt-env-aws-kms/</guid><pubDate>Fri, 12 Jun 2026 12:59:34 GMT</pubDate><category>aws</category><category>security</category><category>nodejs</category><category>backend</category><category>devops</category></item><item><title>Your .env Is a Loaded Gun: A Saner Threat Model for Node.js Secrets</title><link>https://faizahmed.in/nodejs-secrets-threat-model-aws-kms/</link><guid isPermaLink="true">https://faizahmed.in/nodejs-secrets-threat-model-aws-kms/</guid><pubDate>Fri, 12 Jun 2026 11:31:09 GMT</pubDate><category>security</category><category>aws</category><category>nodejs</category><category>backend</category><category>devops</category></item><item><title>Encrypted .env for Node.js with AWS KMS: The Complete Guide</title><link>https://faizahmed.in/encrypted-env-aws-kms-nodejs-complete-guide/</link><guid isPermaLink="true">https://faizahmed.in/encrypted-env-aws-kms-nodejs-complete-guide/</guid><pubDate>Fri, 12 Jun 2026 11:24:08 GMT</pubDate><category>security</category><category>aws</category><category>nodejs</category><category>devops</category><category>backend</category></item><item><title>Retries Are Not a Fix. They Are a Liability.</title><link>https://faizahmed.in/why-retries-are-not-a-fix/</link><guid isPermaLink="true">https://faizahmed.in/why-retries-are-not-a-fix/</guid><pubDate>Sat, 18 Apr 2026 05:00:00 GMT</pubDate><category>distributed-systems</category><category>system-design</category><category>background-jobs</category><category>nodejs</category><category>nestjs</category><category>queue-systems</category></item><item><title>Your Background Jobs Are Not Failing. They Are Lying.</title><link>https://faizahmed.in/why-your-background-jobs-are-lying/</link><guid isPermaLink="true">https://faizahmed.in/why-your-background-jobs-are-lying/</guid><pubDate>Thu, 16 Apr 2026 11:17:39 GMT</pubDate><category>background-jobs</category><category>distributed-systems</category><category>system-design</category><category>backend-engineering</category><category>queue-systems</category><category>nestjs</category><category>nodejs</category><category>idempotency</category><category>reliability-engineering</category><category>async-processing</category></item><item><title>Stop Putting Secrets in process.env: Encrypt Env Vars with AWS KMS</title><link>https://faizahmed.in/secret-keystore/</link><guid isPermaLink="true">https://faizahmed.in/secret-keystore/</guid><pubDate>Sat, 21 Feb 2026 19:30:57 GMT</pubDate><category>security</category><category>aws</category><category>attestation</category><category>nodejs</category><category>nextjs</category><category>nestjs</category><category>devops</category><category>cloud</category><category>backend</category></item><item><title>Scaling the Boring Stuff: Sending 10 Million Notifications with a Simple Node.js Job Worker</title><link>https://faizahmed.in/scaling-the-boring-stuff-sending-10-million-notifications-with-a-simple-nodejs-job-worker/</link><guid isPermaLink="true">https://faizahmed.in/scaling-the-boring-stuff-sending-10-million-notifications-with-a-simple-nodejs-job-worker/</guid><pubDate>Wed, 04 Feb 2026 13:30:28 GMT</pubDate><category>nodejs</category><category>system-design</category><category>scalability</category><category>backend-engineering</category><category>distributed-systems</category></item><item><title>Your Node.js AWS SDK v3 App Will Crash in Production Without This maxSockets Fix</title><link>https://faizahmed.in/your-nodejs-aws-sdk-v3-app-will-crash-in-production-without-this-maxsockets-fix/</link><guid isPermaLink="true">https://faizahmed.in/your-nodejs-aws-sdk-v3-app-will-crash-in-production-without-this-maxsockets-fix/</guid><pubDate>Fri, 07 Nov 2025 07:03:11 GMT</pubDate><category>maxsockets</category><category>aws</category><category>nodejs</category><category>aws-sdk</category><category>production</category></item><item><title>Secrets Sprawl in Node.js Projects: Detection, Prevention &amp; Secure Deployment (2025)</title><link>https://faizahmed.in/secrets-sprawl-in-nodejs-projects-detection-prevention-and-secure-deployment-2025/</link><guid isPermaLink="true">https://faizahmed.in/secrets-sprawl-in-nodejs-projects-detection-prevention-and-secure-deployment-2025/</guid><pubDate>Tue, 05 Aug 2025 08:07:20 GMT</pubDate><category>nodejs</category><category>secrets-management</category><category>gitguardian</category><category>devsecops</category><category>ci-cd</category><category>backend-engineering</category><category>cloud-security</category><category>software-engineering</category><category>security</category></item><item><title>Zero-Downtime Deployments in Node.js: Real Strategies, Real Examples</title><link>https://faizahmed.in/zero-downtime-deployments-in-nodejs/</link><guid isPermaLink="true">https://faizahmed.in/zero-downtime-deployments-in-nodejs/</guid><pubDate>Tue, 29 Jul 2025 07:53:48 GMT</pubDate><category>nodejs</category><category>zero-downtime</category><category>devops</category><category>sre</category><category>ci-cd</category><category>canary-release</category><category>bluegreen-deployment</category><category>microservices</category><category>deployment-strategies</category><category>software-engineering</category></item><item><title>Master Docker in Real Projects: Compose + CI/CD + Best Practices</title><link>https://faizahmed.in/master-docker-compose-cicd/</link><guid isPermaLink="true">https://faizahmed.in/master-docker-compose-cicd/</guid><pubDate>Wed, 23 Jul 2025 08:52:37 GMT</pubDate><category>postgresql</category><category>software-engineering</category><category>docker</category><category>nodejs</category><category>web-development</category><category>devops</category><category>containers</category><category>ci-cd</category><category>phpmyadmin</category><category>docker-compose</category><category>github-actions-1</category><category>backend-engineering</category></item><item><title>API Observability: Logs, Traces, Metrics with OpenTelemetry</title><link>https://faizahmed.in/api-observability-logs-traces-metrics-with-opentelemetry/</link><guid isPermaLink="true">https://faizahmed.in/api-observability-logs-traces-metrics-with-opentelemetry/</guid><pubDate>Tue, 15 Jul 2025 11:30:42 GMT</pubDate><category>nodejs</category><category>opentelemetry</category><category>observability</category><category>apis</category><category>backend-engineering</category><category>microservices</category><category>devops</category><category>jaeger</category><category>prometheus</category><category>grafana</category><category>software-engineering</category><category>distributed-systems</category><category>monitoring</category><category>logging</category><category>tracing</category></item><item><title>How to Architect Multi-Tenant SaaS Backends in 2025 (PostgreSQL + Node.js)</title><link>https://faizahmed.in/architect-multi-tenant-saas-backends-in-2025-postgresql-nodejs/</link><guid isPermaLink="true">https://faizahmed.in/architect-multi-tenant-saas-backends-in-2025-postgresql-nodejs/</guid><pubDate>Fri, 11 Jul 2025 11:30:13 GMT</pubDate><category>nodejs</category><category>postgresql</category><category>saas</category><category>multitenancy</category><category>software-architecture</category><category>tech-leadership</category><category>devtools</category><category>javascript</category><category>express</category></item><item><title>Packaging Node.js Libraries the Right Way: ESM, CommonJS, and Bundlers in 2025</title><link>https://faizahmed.in/packaging-nodejs-libraries-in-2025/</link><guid isPermaLink="true">https://faizahmed.in/packaging-nodejs-libraries-in-2025/</guid><pubDate>Wed, 09 Jul 2025 11:30:22 GMT</pubDate><category>nodejs</category><category>npm</category><category>javascript</category><category>esm</category><category>commonjs</category><category>typescript</category><category>rollup</category><category>tsup</category><category>opensource</category><category>devtools</category><category>backend-engineering</category><category>web-development</category></item><item><title>JWT vs PASETO vs Session-Based Auth</title><link>https://faizahmed.in/jwt-vs-paseto-vs-session-based-auth/</link><guid isPermaLink="true">https://faizahmed.in/jwt-vs-paseto-vs-session-based-auth/</guid><pubDate>Mon, 23 Jun 2025 11:30:29 GMT</pubDate><category>auth-architecture</category><category>websecurity</category><category>nodejs</category><category>authentication</category><category>paseto</category><category>jwt</category><category>backend</category><category>devtips</category><category>oauth</category><category>access-control</category></item><item><title>How to Prevent Replay Attacks with JWTs: JWS vs JWE and Fingerprint Validation in Node.js</title><link>https://faizahmed.in/how-to-prevent-replay-attacks-with-jwts-jws-vs-jwe-and-fingerprint-validation-in-nodejs/</link><guid isPermaLink="true">https://faizahmed.in/how-to-prevent-replay-attacks-with-jwts-jws-vs-jwe-and-fingerprint-validation-in-nodejs/</guid><pubDate>Fri, 06 Jun 2025 13:27:47 GMT</pubDate><category>nodejs</category><category>jwt</category><category>security</category><category>authentication</category><category>backend</category><category>backend-engineering</category><category>websecurity</category><category>replay-attack</category><category>devtips</category><category>express</category></item><item><title>Memory Leaks and Garbage Collection in Node.js: What Developers Get Wrong (And How to Fix It)</title><link>https://faizahmed.in/memory-leaks-and-garbage-collection-in-nodejs/</link><guid isPermaLink="true">https://faizahmed.in/memory-leaks-and-garbage-collection-in-nodejs/</guid><pubDate>Wed, 21 May 2025 13:27:32 GMT</pubDate><category>nodejs</category><category>javascript</category><category>memory-management</category><category>garbagecollection</category><category>web-development</category><category>backend-engineering</category><category>performance-optimization</category><category>debugging</category><category>v8-engine</category><category>devtips</category></item><item><title>Stop Using JSON.parse on Huge Payloads: Streaming JSON in Node.js</title><link>https://faizahmed.in/streaming-huge-json-in-nodejs/</link><guid isPermaLink="true">https://faizahmed.in/streaming-huge-json-in-nodejs/</guid><pubDate>Wed, 07 May 2025 10:30:41 GMT</pubDate><category>nodejs</category><category>javascript</category><category>web-performance</category><category>backend-engineering</category><category>streaming</category><category>memory-management</category><category>json</category><category>scalability</category><category>software-engineering</category><category>devtips</category></item><item><title>Offset vs Cursor vs Keyset Pagination: Best Practices for Scalable APIs</title><link>https://faizahmed.in/offset-vs-cursor-vs-keyset-pagination/</link><guid isPermaLink="true">https://faizahmed.in/offset-vs-cursor-vs-keyset-pagination/</guid><pubDate>Thu, 01 May 2025 07:47:13 GMT</pubDate><category>backend-engineering</category><category>api-design</category><category>pagination</category><category>nodejs</category><category>web-development</category><category>scalability</category><category>software-architecture</category></item><item><title>Backpressure in Node.js: Handling Stream Flow the Right Way</title><link>https://faizahmed.in/handling-backpressure-in-nodejs/</link><guid isPermaLink="true">https://faizahmed.in/handling-backpressure-in-nodejs/</guid><pubDate>Mon, 28 Apr 2025 06:59:57 GMT</pubDate><category>backpressure</category><category>nodejs</category><category>streams</category></item><item><title>Killing Your App with .map()? Here’s the Modern Fix</title><link>https://faizahmed.in/killing-your-app-with-map-heres-the-modern-fix/</link><guid isPermaLink="true">https://faizahmed.in/killing-your-app-with-map-heres-the-modern-fix/</guid><pubDate>Wed, 23 Apr 2025 11:12:37 GMT</pubDate><category>arraymap</category><category>garbagecollection</category><category>javascript</category><category>nodejs</category><category>array</category></item><item><title>Understanding Express Typescript</title><link>https://faizahmed.in/express-typescript/</link><guid isPermaLink="true">https://faizahmed.in/express-typescript/</guid><pubDate>Sun, 12 Jan 2020 18:30:00 GMT</pubDate><category>nodejs</category><category>express</category><category>typescript</category><category>mongodb</category><category>boilerplate</category></item><item><title>NodeJS without NPM</title><link>https://faizahmed.in/nodejs-without-npm/</link><guid isPermaLink="true">https://faizahmed.in/nodejs-without-npm/</guid><pubDate>Sun, 19 Aug 2018 18:30:00 GMT</pubDate><category>nodejs</category><category>npm</category><category>web-development</category><category>apis</category><category>rest-api</category></item><item><title>What&apos;s NodeJS?</title><link>https://faizahmed.in/whats-nodejs/</link><guid isPermaLink="true">https://faizahmed.in/whats-nodejs/</guid><pubDate>Tue, 19 Jun 2018 18:30:00 GMT</pubDate><category>nodejs</category><category>introduction</category></item></channel></rss>