Blog
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)
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
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

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

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

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

Reactive Frameworks Cheatsheet - React, Vue, Svelte and Angular

Maxim Akimov

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

Maxim Akimov

Streamlining Releases: Building Scalable CICD Pipelines with Changesets
Overcome common challenges and scale your CICD pipelines for seamless versioning, releases and deployments.

George Oastler

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

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

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

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

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

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

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

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

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

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

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