• Run n8n and SearXNG Locally with Docker: Build Your Own No-Code AI Playground

    Run n8n and SearXNG Locally with Docker: Build Your Own No-Code AI Playground

    Discover how to set up n8n and SearxNG to build a private AI agent for web searches. You'll have an AI agent that fetches information online without tracking your data. Ideal for those interested in automation and privacy!

  • Optimize Three.js: 4 Key Techniques

    Optimize Three.js: 4 Key Techniques

    Practical tips for improving performance when working with Three.js scenes in real-world projects.

  • Built-in-like Range in JavaScript

    Built-in-like Range in JavaScript

    Make it possible to generate any range of integers with built-in-like syntax.

  • Penetration and Security in JavaScript

    Penetration and Security in JavaScript

    Are you sure you are ensuring your code to be used as intended? Are you preventing it from beeing used in a malicious way? If what comes your way is putting guards in your functions, this post will open up a world for you. Using checks is not enough.

  • OAuth popup ~ Practical Guide

    OAuth popup ~ Practical Guide

    Enhance your GitHub OAuth implementation by using a popup approach for authentication in single-page applications (SPAs). This guide walks you through the process of spawning a popup for user authentication and securely handling the access token.

  • Cache-Control max-age, stale-while-revalidate

    Cache-Control max-age, stale-while-revalidate

    Until now, thanks to Last-Modified/If-Modified-Since or ETag/If-None-Match we mainly saved on bandwidth. However, the server always had to process each request.

  • CORS, Preflight request and OPTIONS Method

    CORS, Preflight request and OPTIONS Method

    This post is intended to be a light reading with the purpose to give a minimum of context and instill some curiosity towards a topic often considered opaque - CORS are a simple HTTP-header mechanism that every web developer can easily understand.

  • ETag/If-None-Match

    ETag/If-None-Match

    we explored the usefulness of the Last-Modified Response Header and If-Modified-Since Request Header. They work really well when dealing with an endpoint returning a file. What about data retrieved from a database or assembled from different sources?

  • GitHub App and OAuth ~ Disjointed flow

    GitHub App and OAuth ~ Disjointed flow

    Discover how to integrate GitHub App functionality into an existing OAuth-based authentication system. This guide explains how to authenticate as a GitHub App using JWT, retrieve installation IDs, and access repositories associated with the app.

  • GitHub App and OAuth ~ Practical Kick-Starter

    GitHub App and OAuth ~ Practical Kick-Starter

    Learn how to build an interface that allows GitHub-authenticated users to view which repositories have a specific GitHub App installed. This guide covers creating a GitHub App, implementing OAuth authentication, and querying the GitHub REST API for installations and repositories.

  • Headers for large files

    Headers for large files

    HTTP headers Content-Length, Content-Encoding, and Transfer-Encoding impact the transmission of large files in web applications. With a practical Node.js server example, learn about header combinations and the importance of the Content-Length header and gzip compression for optimizing web performance.

  • How to Use a Reverse Trie for Fast Disposable Email Domain Detection

    How to Use a Reverse Trie for Fast Disposable Email Domain Detection

    Learn how to use a reverse Trie to efficiently detect disposable email domains. Optimize your domain lookups with a scalable, memory-efficient solution tailored for fast and precise results.

  • Throttling Explained: A Guide to Managing API Request Limits

    Throttling Explained: A Guide to Managing API Request Limits

    Learn how to implement a simple and effective throttling system in TypeScript to protect your APIs from overload. This guide covers rate-limiting strategies, IP tracking, and periodic cleanup to manage stale records and optimize performance.