Topic

Technical

Engineering notes from the team — TypeScript patterns, monorepo trade-offs, infrastructure decisions and the build tooling behind Procaptcha.

How to Stop PHP Form Spam (Without a Plugin)
CAPTCHA Jun 24, 2026

How to Stop PHP Form Spam (Without a Plugin)

If your PHP mail script is being abused by bots, the fix is to stop the bot before mail() runs. Server-side CAPTCHA verification in a few lines of PHP, with the Procaptcha API.

Chris Taylor

Chris Taylor

6 min
Faking browsers is easy — but not at scale
Technical May 21, 2026

Faking browsers is easy — but not at scale

We watched 131,819 residential US IPs throw 1.4M brute-force attempts at one mobile-only customer over 30 days, and they all collapsed onto a handful of fingerprints.

Chris Taylor

Chris Taylor

6 min
How to Add CAPTCHA to Fastly CDN
Technical Jan 20, 2026

How to Add CAPTCHA to Fastly CDN

Learn how to integrate Procaptcha with Fastly CDN to protect your website from bot attacks while maintaining performance and user privacy.

Chris Taylor

Chris Taylor

4 min
We suffered MongooseJS so you don't have to
Technical Dec 2, 2025

We suffered MongooseJS so you don't have to

We investigate how MongooseJS's type safety can silently add bugs to your code base.

George Oastler

George Oastler

6 min
We cut our Mongo DB costs by 90% by moving to Hetzner
CAPTCHA Nov 12, 2025

We cut our Mongo DB costs by 90% by moving to Hetzner

We made the switch from AWS-hosted MongoDB Atlas to a self-hosted solution on Hetzner, resulting in a 90% reduction in costs while maintaining performance and reliability.

Chris Taylor

Chris Taylor

3 min
Reactive Frameworks Cheatsheet - React, Vue, Svelte and Angular
Technical May 19, 2025

Reactive Frameworks Cheatsheet - React, Vue, Svelte and Angular

Maxim Akimov

Maxim Akimov

10 min
PHP Views Package - Templating Made Easy with Blade and Model-Driven Approach
Technical May 19, 2025

PHP Views Package - Templating Made Easy with Blade and Model-Driven Approach

Maxim Akimov

Maxim Akimov

10 min
Streamlining Releases: Building Scalable CICD Pipelines with Changesets
Technical May 6, 2025

Streamlining Releases: Building Scalable CICD Pipelines with Changesets

Overcome common challenges and scale your CICD pipelines for seamless versioning, releases and deployments.

George Oastler

George Oastler

17 min
Independent vs Locked Versioning in a Workspace
Technical May 3, 2025

Independent vs Locked Versioning in a Workspace

Discover the key differences between locked and independent versioning in workspaces, and learn how to optimize your team's development and deployment workflows.

George Oastler

George Oastler

6 min
Mastering Versioning: A Guide to Software Stability
Technical May 2, 2025

Mastering Versioning: A Guide to Software Stability

Explore the essentials of versioning in software development, from semantic versioning basics to avoiding common pitfalls, and learn how to manage dependencies and updates with confidence

George Oastler

George Oastler

10 min
Monorepo vs Multirepo Architecture: How to Decide?
Technical May 1, 2025

Monorepo vs Multirepo Architecture: How to Decide?

Discover the pros and cons of monorepo vs multirepo architectures, and learn how to choose the right approach for your projects to streamline development and accelerate delivery.

George Oastler

George Oastler

10 min
How to Test Your Ansible Playbooks Locally
CAPTCHA Jul 30, 2024

How to Test Your Ansible Playbooks Locally

Testing your Ansible playbooks locally can save you time and effort. Here are some tips to help you get started.

Chris Taylor

Chris Taylor

10 min
tsx vs ts-node: Time to Drop ts-node for tsx
CAPTCHA Jun 26, 2024

tsx vs ts-node: Time to Drop ts-node for tsx

tsx vs ts-node compared: why tsx runs TypeScript faster than ts-node, and how to migrate your Node.js scripts away from ts-node today.

Chris Taylor

Chris Taylor

4 min
actions/cache@v3 restore: GitHub Actions Cache Fix
CAPTCHA Jun 18, 2024

actions/cache@v3 restore: GitHub Actions Cache Fix

Fix GitHub Actions caching with actions/cache@v3 and actions/cache/restore: share caches across branches and evict old caches faster.

George Oastler

George Oastler

10 min
TypeScript: Branded Types 🔧
CAPTCHA Apr 22, 2024

TypeScript: Branded Types 🔧

How to brand TypeScript types for norminal typing, providing an automated and easy-to-use way of making a type nominal.

George Oastler

George Oastler

10 min
Using Vite To Rebuild Local Dependencies in an NPM Workspace
Technical Apr 18, 2024

Using Vite To Rebuild Local Dependencies in an NPM Workspace

When we make changes to a package that our vite project depends on, Vite doesn't automatically rebuild the local package dependency as it's outside the module graph. This article explains how to get Vite to rebuild local dependencies in an NPM workspace.

Chris Taylor

Chris Taylor

6 min
Vite: How to handle `.node` files
CAPTCHA Apr 8, 2024

Vite: How to handle `.node` files

Work around for handling `.node` files in vite using a custom plugin. `.node` files are the nodejs way of providing platform specific code. This sounds great, until Vite enters the mix. Vite has no ability to handle native binaries whilst bundling, interpreting `.node` files as raw js. In this article we discuss how to handle `.node` files in Vite.

George Oastler

George Oastler

10 min
TypeScript: Mapped Type Magic 🪄
CAPTCHA Mar 13, 2024

TypeScript: Mapped Type Magic 🪄

Explore how TypeScript mapped types can create some perplexing paradoxes where Cat === Dog! An overview of how to brand identical types so that the TypeScript compiler can tell them apart from each other.

George Oastler

George Oastler

10 min
How to deploy Procaptcha on your website or app
Technical Sep 20, 2023

How to deploy Procaptcha on your website or app

How to switch from Google's reCAPTCHA to Prosopo Procaptcha and protect your website or app from bots for free.

Chris Taylor

Chris Taylor

3 min
Prosopo Radar logo

Welcome legitimate users and agents. Stop the bots.

AI agents now act on behalf of real people — shopping, researching, booking. Block them all and you lose customers; allow them all and you invite abuse. Prosopo establishes trust on every request, so the legitimate humans and agents get through and the bad bots don't.

Smarter detection, transparent pricing, and complete privacy — no cookies, no tracking, no data sold on. Sign up for free and protect your site in minutes.