# Posts by tag 'nodejs' — Liran Tal

AI security researcher, open-source maintainer, and author. Explore Liran Tal’s blog, research papers, developer tools, books, and conference talks.

Canonical: https://lirantal.com/tag/nodejs

[![](/_astro/cursor-stop-hook-lint-build-verification.DNm2VBK0_1Mw8Sh.png)

Apr 22, 2026 15 min read

### Cursor Agent Hooks: Lint and Build Checks After Each Turn

How to wire a Cursor stop hook that runs pnpm lint and pnpm build after every agent turn, returns followup\_message with captured output on failure, and avoids silent breakage from Cursor's bundled Node on PATH—plus loop limits, debug toggles, and when to choose postToolUse or sessionEnd instead.](/blog/cursor-stop-hook-lint-build-verification)

*   [cursor](/tag/cursor)
*   [hooks](/tag/hooks)
*   [developer experience](/tag/developer-experience)
*   [nodejs](/tag/nodejs)
*   [ci](/tag/ci)

 [![](/_astro/nasa-_SFJhRPzJHs-unsplash.CsHkw6N7_16ogtN.jpg)

Feb 19, 2025 8 min read

### The CJS module system, globals and other hardships with maintainable code in Node.js

What are some common anti patterns and signs of tight coupling in a Node.js codebase and the challenges they present? Let's unfold some messy code and learn how the CJS module system and the use of globals has to do with it.](/blog/cjs-module-system-globals-hardships-maintainable-code-nodejs)

*   [commonjs](/tag/commonjs)
*   [modules](/tag/modules)
*   [nodejs](/tag/nodejs)
*   [software design](/tag/software-design)

 [![](/_astro/how-to-read-and-parse-pdfs-pdfjs-create-pdfs-pdf-lib-nodejs.DOURrhwi_Z213oop.jpg)

Feb 2, 2025 4 min read

### How to Read and Parse PDFs with PDF.js and Create PDFs with PDF Lib in Node.js

If you're building LLM and AI-powered chatbots like me you might need to read and parse PDFs or create PDFs in Node.js. Here's how to do it with PDF.js and PDF Lib.](/blog/how-to-read-and-parse-pdfs-pdfjs-create-pdfs-pdf-lib-nodejs)

*   [pdf](/tag/pdf)
*   [parsing](/tag/parsing)
*   [nodejs](/tag/nodejs)

 [![](/_astro/nodejs-poor-auth-express-conventions.CVHAjPGW_Z27bPDE.jpg)

May 3, 2024 5 min read

### Poor Express Authentication Patterns in Node.js and How to Avoid Them

Tired of seeing poor authentication patterns in Node.js applications and Express code examples? Here's a guide on how to avoid them and what to do instead](/blog/poor-express-authentication-patterns-nodejs)

*   [nodejs](/tag/nodejs)
*   [express](/tag/express)
*   [authentication](/tag/authentication)
*   [security](/tag/security)

 [![](/_astro/rima-kruciene-gpKe3hmIawg-unsplash.CpaZShYS_1zSFvu.jpg)

Oct 31, 2023 8 min read

### Best Practices for Bootstrapping a Node.js Application Configuration

Follow these best practices to bootstrap a Node.js application configuration in a robust and maintainable way using env-schema.](/blog/best-practices-for-bootstrapping-a-node-js-application-configuration)

*   [config](/tag/config)
*   [dotenv](/tag/dotenv)
*   [.env](/tag/env)
*   [nodejs](/tag/nodejs)
*   [env-schema](/tag/env-schema)

 [![](/_astro/config-anti-patterns-nodejs-apps.BrLo36VX_Z1pNhU2.png)

Oct 1, 2023 13 min read

### Environment variables and configuration anti patterns in Node.js applications

Every Node.js application needs configuration management, but there are many ways to do it. You might have heard about \`.env\` files, and packages like dotenv, convict, env-schema so let's explore the different configuration patterns and how to use them.](/blog/environment-variables-configuration-anti-patterns-node-js-applications)

*   [config](/tag/config)
*   [dotenv](/tag/dotenv)
*   [.env](/tag/env)
*   [nodejs](/tag/nodejs)

 [![](/_astro/photo-1531482615713-2afd69097998.BF5R02ay_16ffJw.jpg)

Sep 4, 2023 9 min read

### Generating presentation titles using OpenAI background jobs with Node.js, Express and Trigger.dev

Do you ever struggle to come up with creative presentation titles? Let's build that while learning how to use Generative AI, Express and Trigger.dev with the OpenAI integration.](/blog/background-jobs-processing-with-node-js-express-trigger-dev)

*   [background jobs](/tag/background-jobs)
*   [nodejs](/tag/nodejs)
*   [trigger.dev](/tag/trigger-dev)

 [![](/_astro/photo-1638437447411-17a4005b2f56.DIbrsgQH_2maXVo.jpg)

Aug 17, 2023 9 min read

### How to Process Scheduled Queue Jobs in Node.js with BullMQ and Redis on Heroku

Process long-running tasks in Node.js with background jobs. Learn how to use BullMQ and Redis on Heroku to create a scalable and reliable background job processing system.](/blog/how-to-process-scheduled-queue-jobs-in-nodejs-with-bullmq-and-redis-on-heroku)

*   [background jobs](/tag/background-jobs)
*   [nodejs](/tag/nodejs)
*   [bullmq](/tag/bullmq)
*   [redis](/tag/redis)
*   [heroku](/tag/heroku)

 [![](/_astro/photo-1682268294570-616e9ca9791b.6dpdmytl_21IFzC.jpg)

Aug 7, 2023 7 min read

### Configuration Decoded: Lesser-Known Tips for Working with env-schema in Node.js

Level up your Node.js apps with env-schema! Manage configurations effortlessly and learn useful practices for building for configuration management.](/blog/configuration-decoded-lesser-known-tips-for-working-with-env-schema-in-nodejs)

*   [env-schema](/tag/env-schema)
*   [nodejs](/tag/nodejs)
*   [configuration](/tag/configuration)
*   [backend](/tag/backend)

 [![](/_astro/fastify-avoid-reply-hijack-blog-post-cover.CU0nCCO0_25hLjd.png)

Jun 30, 2023 6 min read

### Avoid Fastify's reply.raw and reply.hijack Despite Being A Powerful HTTP Streams Tool

How to harness the power of streams in Fastify web applications without resorting to raw HTTP replies via reply.raw and reply.hijack().](/blog/avoid-fastify-reply-raw-and-reply-hijack-despite-being-a-powerful-http-streams-tool)

*   [fastify](/tag/fastify)
*   [streams](/tag/streams)
*   [nodejs](/tag/nodejs)
*   [javascript](/tag/javascript)

 [![](/_astro/photo-1551600854-b0d4f3f09bc6.BScNXmhf_Z2nDag2.jpg)

Jan 26, 2019 6 min read

### Open Source From Heaven, Modules From Hell

How do you find events to attend or speak at? I often get asked that and in this article I'll share the resources I use for CFP application and public speaking at conferences.](/blog/2019-01-26)

*   [nodejs](/tag/nodejs)
*   [javascript](/tag/javascript)

 [![](/_astro/photo-1468956398224-6d6f66e22c35.BePqp3CW_Zj88Tk.jpg)

Jul 3, 2014 2 min read

### MEAN.io v0.4 released – this is how you stay relevant

Getting started with MEAN.io JavaScript & Node.js framework by keeping up with the git branch of development](/blog/2014-07-03)

*   [meanio](/tag/meanio)
*   [javascript](/tag/javascript)
*   [nodejs](/tag/nodejs)

 [![](/_astro/photo-1468956398224-6d6f66e22c35.BePqp3CW_Zj88Tk.jpg)

Jun 13, 2014 1 min read

### MEAN.io Session Cookie parameters

How to configure the session cookie parameters in MEAN.io](/blog/2014-06-13)

*   [nodejs](/tag/nodejs)
*   [mean](/tag/mean)
*   [meanio](/tag/meanio)
*   [express](/tag/express)
*   [cookie](/tag/cookie)
*   [session](/tag/session)
