# Blog — Page 3 — 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/blog/3

[![](/_astro/gamified-learning.Bag_tSd__Z2d5lNw.png)

Mar 7, 2025 11 min read

### Getting started with Neural Networks in JavaScript

Practical and hands-on guide to getting started with Neural Networks in JavaScript using the Brain.js library to build a simple neural network to predict if a number is even or odd and more.](/blog/getting-started-neural-networks-in-javascript)

*   [ML](/tag/ml)
*   [Neural Networks](/tag/neural-networks)
*   [Brain.js](/tag/brain-js)

 [![](/_astro/how-use-genai-speed-up-demo-apps-devrel-role.DFKGNlCJ_1JsBBJ.jpg)

Mar 2, 2025 5 min read

### How I use GenAI to Speed Up Demo Apps in My DevRel Role

Developer Advocates and Engineers can leverage Generative AI to speed up their work and make them more productive. Here's a practical example from my day-to-day.](/blog/how-use-genai-speed-up-demo-apps-devrel-role)

*   [DevRel](/tag/devrel)
*   [AI](/tag/ai)

 [![](/_astro/what-is-llms-txt-file.m38k31jh_p7KKJ.jpg)

Feb 28, 2025 3 min read

### What is an LLMs.txt File?

Building with Large Language Models (LLMs) requires context and metadata. The \`llms.txt\` file format is a simple text file that provides LLMs with relevant context and metadata.](/blog/what-is-an-llms-txt-file)

*   [LLM](/tag/llm)
*   [ChatGPT](/tag/chatgpt)
*   [AI](/tag/ai)

 [![](/_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/typescript-2025-esm-cjs-npm-publish.DYf54703_Z2u1rYy.jpg)

Jan 14, 2025 5 min read

### TypeScript in 2025 with ESM and CJS npm publishing is still a mess

How do you handle TypeScript, dual ESM and CJS publishing, and the JavaScript toolchain in 2025? Here's a brief overview of the current state of the ecosystem and the tooling I personally use.](/blog/typescript-in-2025-with-esm-and-cjs-npm-publishing)

 [![](/_astro/home-assistant-youtube-dns-blocking.DyPypVHT_Z168tjN.jpg)

Jan 7, 2025 3 min read

### Home Assistant YouTube DNS Blocking with AdGuard and Lovelace Buttons Setup

How to set up Home Assistant YouTube DNS blocking with AdGuard and Lovelace buttons for a more action friendly interface.](/blog/home-assistant-youtube-dns-blocking-adguard-lovelace-buttons-setup)

*   [home assistant](/tag/home-assistant)
*   [adguard](/tag/adguard)
*   [dns blocking](/tag/dns-blocking)

 [![](/_astro/custom-astro-starlight-sidebar-for-gated-content-with-auth.MZ5AtzGh_ZXcLBo.jpg)

Jan 6, 2025 4 min read

### Customizing Astro Starlight Sidebar for Gated Content with Authentication

Learn how I got the Starlight documentation framework in Astro to create a gated content website with authentication for my Bun Security course](/blog/customizing-astro-starlight-sidebar-gated-content-auth)

*   [astro](/tag/astro)
*   [documentation](/tag/documentation)

 [![](/_astro/google-cloud-project-storage.D1b3XoCb_3AHwf.jpg)

Dec 21, 2024 3 min read

### How to Setup Google Cloud Project and Store Images in Google Cloud

Step-by-step tutorial on configuring a Google Cloud project and storing images in Google Cloud Storage.](/blog/how-to-setup-google-cloud-project-and-store-images-in-google-cloud)

*   [google cloud](/tag/google-cloud)
*   [firebase](/tag/firebase)

 [![](/_astro/thinking-fast-and-slow-in-appsec.h-Gk7Z-7_Zv3wX9.jpg)

Dec 12, 2024 11 min read

### Thinking Fast and Slow in Application Security

Imagine if we applied behavioral economics principles to application security methodologies and practices, what would be able to unlock? System1 and System2, All Systems Go.](/blog/thinking-fast-and-slow-in-application-security)

 [![](/_astro/astro-auto-import.DNErqz84_Z1kIlIs.jpg)

Sep 6, 2024 4 min read

### Component auto import in Astro framework

Can Astro automatically import components in markdown files? Yes, it can! Here's how to do it thanks to Chris Swithinbank and his Astro Auto Import package.](/blog/component-auto-import-in-astro-framework)

 [![](/_astro/nodejs-promise-with-resolvers.kmjXuem5_Z12T1md.jpg)

Aug 30, 2024 3 min read

### Using Promise.withResolvers in Node.js Tests

This article explores the use of \`Promise.withResolvers\` in Node.js tests, providing examples and refactoring techniques to handle nested tests and signal their completion effectively. It also discusses the limitations of the \`Promise.withResolvers\` API in different Node.js versions.](/blog/promise-with-resolvers-in-nodejs-tests)

*   [javascript](/tag/javascript)
*   [promises](/tag/promises)
*   [event emitter](/tag/event-emitter)

 [![](/_astro/tanstack-query-vue-3.C5iM3I-I_Z1e1kqT.jpg)

Aug 11, 2024 9 min read

### Supercharging Your Vue.js 3 App with TanStack Query: A Practical Refactoring Guide

Learn how to supercharge your Vue.js 3 app with TanStack Query. Discover efficient data fetching, caching, and state management in this practical refactoring guide.](/blog/supercharging-vuejs-3-app-tanstack-query-practical-refactoring-guide)

 [![](/_astro/zero-dependency-javascript.DEqq6uNm_ZX8fab.png)

Jul 24, 2024 8 min read

### Zero Dependency JavaScript is the Future?

The rise of zero dependency JavaScript with packages like \`neotraverse\` and the controversy around the \`axobject-query\` package demonstrate the different perspectives and trade-offs that developers and maintainers need to consider when building and maintaining JavaScript applications.](/blog/zero-dependency-javascript-is-the-future)

 [![](/_astro/how-to-run-local-llm-offline-first.Cyh2eSM0_dVl78.png)

Jul 15, 2024 7 min read

### How to run a local LLM for inference with an offline-first approach

How about we try a different approach to ChatGPT, Google Gemini or Anthropic's Claude? Learn how to run a local LLM model for inference so you can access it offline and without incurring costs beyond your own hardware compute.](/blog/how-to-run-local-llm-for-inference-with-offline-first-approach)

 [![](/_astro/gen-ai-predictions-future-of-llms.DN4TKRMJ_Z5Gu4N.jpg)

Jun 12, 2024 7 min read

### GenAI Predictions and The Future of LLMs as local-first offline Small Language Models (SLMs)

Current adoption craze for GenAI tools like ChatGPT bring hidden costs in the form of privacy, security, data leakage, latency and availability. The future isn't gloom though, as the future of LLMs is in local-first offline inference, open LLMs, consumer-grade GPU acceleration and micro fine-tuning model training. How and why? Read on.](/blog/genai-predictions-the-future-llms-local-first-offline-small-language-models-slm)

 [![](/_astro/playwright-buildpacks-on-heroku.ijAOIXwx_Z707nW.jpg)

May 31, 2024 5 min read

### Installing Playwright on Heroku for Programmatic Node.js Browser Automation

Getting Playwright to work on Heroku wasn't smooth sailing. It looked for browser dependencies that weren't installed by default and not in the location it expected them. Here's how I did it and what I learned along the way.](/blog/installing-playwright-on-heroku-for-programmatic-nodejs-browser-automation)

 [![](/_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/adguard-add-on-block-media.CtdOzylp_2sBGh2.png)

Apr 20, 2024 5 min read

### How to block LAN clients from accessing YouTube and other media with AdGuard and Home Assistant

Learn how to block specific LAN client IPs from accessing YouTube and other media sites using AdGuard add-on and Home Assistant.](/blog/block-lan-clients-from-accessing-youtube-and-other-media-with)

*   [homeassistant](/tag/homeassistant)
*   [home automation](/tag/home-automation)
*   [adguard](/tag/adguard)

 [![](/_astro/photo-1629576728726-23f557c8010f.C1i6Vrdl_Z1QIjlQ.jpg)

Feb 16, 2024 8 min read

### HTTP webhooks on Firebase Functions and Fastify: A Practical Case Study with Lemon Squeezy

A break-down of how to set up Fastify to work on serverless Firebase Functions and access the request's rawBody to validate incoming HTTP webhooks requests from Lemon Squeezy.](/blog/http-webhooks-firebase-functions-fastify-practical-case-study-lemon-squeezy)

 [![](/_astro/photo-1485811055483-1c09e64d4576.zwhgPhRu_t5Svh.jpg)

Jan 3, 2024 5 min read

### How To Get Social Media Previews Right on Astro blog with OpenGraph Meta Tags

You have an Astro blog? Now it's time to unlock the social sharing magic! Learn to wield OpenGraph meta tags configuration, crafting eye-catching previews. Optimize your website's social share game with these tips.](/blog/getting-social-media-previews-right-with-opengraph-meta-tags)

*   [opengraph](/tag/opengraph)
*   [seo](/tag/seo)
*   [astro](/tag/astro)
*   [og](/tag/og)

 [![](/_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/tailscale-on-home-assistant-install.5S_wv0GE_ZaoqUh.png)

Oct 15, 2023 5 min read

### How I Deployed Tailscale VPN to Securely Access Home Assistant Remotely

Often smart home automation enthusiasts want to access their Home Assistant instance remotely. This can be done by exposing the Home Assistant instance to the internet. However, this is not a secure way to access Home Assistant remotely and pose the risk of cyber attacks. In this article, we will see how to use Tailscale VPN to securely access Home Assistant remotely.](/blog/employ-tailscale-vpn-to-securely-access-home-assistant-remotely)

*   [home assistant](/tag/home-assistant)
*   [tailscale](/tag/tailscale)
*   [vpn](/tag/vpn)
*   [smart home](/tag/smart-home)
*   [home automation](/tag/home-automation)

 [![](/_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-1505579962197-df174377e13f.DGTICmEV_HSQ75.jpg)

Sep 13, 2023 5 min read

### Vue.js Patterns: Using Vue.js 3 Composition API for Reactive Parent to Child Communication

Vue.js revolves around a reactivity system, which is unlike React. In this article, we will explore how to use the Vue.js 3 Composition API to create a reactive parent to child communication.](/blog/vuejs-patterns-using-vuejs-3-composition-api-for-reactive-parent-to-child-communication)

*   [vuejs](/tag/vuejs)
*   [reactivity](/tag/reactivity)
*   [composition-api](/tag/composition-api)

[

Newer posts

](/blog/2)[

Older posts

](/blog/4)
