Forem

Gabriel Anhaia profile picture

Gabriel Anhaia

Senior Software Engineer @ Monta · 10+ years in backend, distributed systems & AI agents · Creator of Hermes IDE (AI-native terminal) & Neural Playground · Author of 2 books · Open-source enthusiast

Location Berlin, Germany Joined Joined on  Personal website https://xgabriel.com github website

Work

Software Engineer and Book Author

Request Hedging: The Tail-at-Scale Technique Most Teams Skip
Cover image for Request Hedging: The Tail-at-Scale Technique Most Teams Skip

Request Hedging: The Tail-at-Scale Technique Most Teams Skip

Comments
8 min read
Pull-Based vs Push-Based Architecture: The Choice That Decides Your Reliability Story
Cover image for Pull-Based vs Push-Based Architecture: The Choice That Decides Your Reliability Story

Pull-Based vs Push-Based Architecture: The Choice That Decides Your Reliability Story

Comments
10 min read
Service Mesh in 2026: When Istio Is Overkill, When It's the Right Answer
Cover image for Service Mesh in 2026: When Istio Is Overkill, When It's the Right Answer

Service Mesh in 2026: When Istio Is Overkill, When It's the Right Answer

Comments
9 min read
Caching Layers in 2026: CDN, App, DB, Query: What Goes Where
Cover image for Caching Layers in 2026: CDN, App, DB, Query: What Goes Where

Caching Layers in 2026: CDN, App, DB, Query: What Goes Where

1
Comments 1
10 min read
Design a Multi-Device Authentication Service (Sessions vs JWT vs Passkeys)
Cover image for Design a Multi-Device Authentication Service (Sessions vs JWT vs Passkeys)

Design a Multi-Device Authentication Service (Sessions vs JWT vs Passkeys)

Comments
10 min read
Design a Payment Ledger: Idempotent, Audit-Compliant, Reconciles to the Cent
Cover image for Design a Payment Ledger: Idempotent, Audit-Compliant, Reconciles to the Cent

Design a Payment Ledger: Idempotent, Audit-Compliant, Reconciles to the Cent

Comments
12 min read
Design a Real-Time Collaboration Backend (OT vs CRDT, Step by Step)
Cover image for Design a Real-Time Collaboration Backend (OT vs CRDT, Step by Step)

Design a Real-Time Collaboration Backend (OT vs CRDT, Step by Step)

Comments
11 min read
Design a Job Scheduler at 10M Jobs/Day: 4 Components, 3 Failure Modes
Cover image for Design a Job Scheduler at 10M Jobs/Day: 4 Components, 3 Failure Modes

Design a Job Scheduler at 10M Jobs/Day: 4 Components, 3 Failure Modes

Comments
12 min read
Design a Feature Flag Service: 100k SDK Clients and the SSE Protocol Reframe
Cover image for Design a Feature Flag Service: 100k SDK Clients and the SSE Protocol Reframe

Design a Feature Flag Service: 100k SDK Clients and the SSE Protocol Reframe

Comments
11 min read
Design a Feature Flag Service: 100k SDK Clients and the SSE Protocol Reframe
Cover image for Design a Feature Flag Service: 100k SDK Clients and the SSE Protocol Reframe

Design a Feature Flag Service: 100k SDK Clients and the SSE Protocol Reframe

Comments
11 min read
JSONB vs Relational in 2026: 5 Query Shapes, 5 Verdicts
Cover image for JSONB vs Relational in 2026: 5 Query Shapes, 5 Verdicts

JSONB vs Relational in 2026: 5 Query Shapes, 5 Verdicts

Comments
8 min read
Logical Replication for Migrations: Zero-Downtime Postgres Upgrades in 2026
Cover image for Logical Replication for Migrations: Zero-Downtime Postgres Upgrades in 2026

Logical Replication for Migrations: Zero-Downtime Postgres Upgrades in 2026

Comments
9 min read
Read-Modify-Write: The Optimistic Concurrency Pattern Most ORMs Get Wrong
Cover image for Read-Modify-Write: The Optimistic Concurrency Pattern Most ORMs Get Wrong

Read-Modify-Write: The Optimistic Concurrency Pattern Most ORMs Get Wrong

Comments
8 min read
Postgres VACUUM Tuning: 4 Settings That Decide Whether Autovacuum Keeps Up
Cover image for Postgres VACUUM Tuning: 4 Settings That Decide Whether Autovacuum Keeps Up

Postgres VACUUM Tuning: 4 Settings That Decide Whether Autovacuum Keeps Up

Comments
8 min read
Event Sourcing Snapshots: When, How Often, and Why Most Teams Over-Snapshot
Cover image for Event Sourcing Snapshots: When, How Often, and Why Most Teams Over-Snapshot

Event Sourcing Snapshots: When, How Often, and Why Most Teams Over-Snapshot

Comments
7 min read
Dead Letter Queue Triage: The 5 Categories That Cover 95% of Failures
Cover image for Dead Letter Queue Triage: The 5 Categories That Cover 95% of Failures

Dead Letter Queue Triage: The 5 Categories That Cover 95% of Failures

Comments
8 min read
Outbox Pattern: When CDC Beats Polling, When Polling Beats CDC
Cover image for Outbox Pattern: When CDC Beats Polling, When Polling Beats CDC

Outbox Pattern: When CDC Beats Polling, When Polling Beats CDC

Comments
8 min read
Saga Compensation When Undo Is Impossible: 3 Patterns and the Audit Trail
Cover image for Saga Compensation When Undo Is Impossible: 3 Patterns and the Audit Trail

Saga Compensation When Undo Is Impossible: 3 Patterns and the Audit Trail

Comments
9 min read
Eval Set Drift: How to Know When Your Golden Set Went Stale
Cover image for Eval Set Drift: How to Know When Your Golden Set Went Stale

Eval Set Drift: How to Know When Your Golden Set Went Stale

Comments
8 min read
Hallucination Detection at the Trace Layer: 4 Detectors You Can Ship Today
Cover image for Hallucination Detection at the Trace Layer: 4 Detectors You Can Ship Today

Hallucination Detection at the Trace Layer: 4 Detectors You Can Ship Today

Comments
10 min read
Per-Customer LLM Cost Reports (Without Rearchitecting Your Billing Pipeline)
Cover image for Per-Customer LLM Cost Reports (Without Rearchitecting Your Billing Pipeline)

Per-Customer LLM Cost Reports (Without Rearchitecting Your Billing Pipeline)

Comments
8 min read
LLM Trace Storage Cost: Why Your S3 Bill Exploded, and 3 Fixes
Cover image for LLM Trace Storage Cost: Why Your S3 Bill Exploded, and 3 Fixes

LLM Trace Storage Cost: Why Your S3 Bill Exploded, and 3 Fixes

Comments
8 min read
Reasoning Effort: Low, Medium, High: When Each Setting Actually Pays Off
Cover image for Reasoning Effort: Low, Medium, High: When Each Setting Actually Pays Off

Reasoning Effort: Low, Medium, High: When Each Setting Actually Pays Off

Comments
8 min read
Multi-Shot vs Zero-Shot: When Adding Examples Actually Hurts Accuracy
Cover image for Multi-Shot vs Zero-Shot: When Adding Examples Actually Hurts Accuracy

Multi-Shot vs Zero-Shot: When Adding Examples Actually Hurts Accuracy

Comments
8 min read
Prompt Diff Testing: A/B Your Prompts Without Changing the Model
Cover image for Prompt Diff Testing: A/B Your Prompts Without Changing the Model

Prompt Diff Testing: A/B Your Prompts Without Changing the Model

Comments
7 min read
Structured Output Validation: Pydantic/Zod vs In-Prompt Schema vs JSON Mode
Cover image for Structured Output Validation: Pydantic/Zod vs In-Prompt Schema vs JSON Mode

Structured Output Validation: Pydantic/Zod vs In-Prompt Schema vs JSON Mode

Comments
9 min read
Multi-Tenant RAG: 4 Isolation Patterns and the One Regulators Actually Ask About
Cover image for Multi-Tenant RAG: 4 Isolation Patterns and the One Regulators Actually Ask About

Multi-Tenant RAG: 4 Isolation Patterns and the One Regulators Actually Ask About

Comments
9 min read
Vector DB Choice 2026: pgvector vs Qdrant vs Pinecone vs Weaviate: The Real Trade Matrix
Cover image for Vector DB Choice 2026: pgvector vs Qdrant vs Pinecone vs Weaviate: The Real Trade Matrix

Vector DB Choice 2026: pgvector vs Qdrant vs Pinecone vs Weaviate: The Real Trade Matrix

Comments
9 min read
Hybrid Retrieval Fusion: RRF vs Weighted vs Learned: When Each Wins
Cover image for Hybrid Retrieval Fusion: RRF vs Weighted vs Learned: When Each Wins

Hybrid Retrieval Fusion: RRF vs Weighted vs Learned: When Each Wins

Comments
9 min read
Chunk Overlap: The RAG Parameter Most Teams Pick Wrong
Cover image for Chunk Overlap: The RAG Parameter Most Teams Pick Wrong

Chunk Overlap: The RAG Parameter Most Teams Pick Wrong

Comments
7 min read
Reranker Selection: Cross-Encoder vs LLM-as-Reranker vs ColBERT: Which Earns Its Latency
Cover image for Reranker Selection: Cross-Encoder vs LLM-as-Reranker vs ColBERT: Which Earns Its Latency

Reranker Selection: Cross-Encoder vs LLM-as-Reranker vs ColBERT: Which Earns Its Latency

Comments
9 min read
Computer-Use Agents: 3 Sandboxing Patterns That Don't Leak Credentials
Cover image for Computer-Use Agents: 3 Sandboxing Patterns That Don't Leak Credentials

Computer-Use Agents: 3 Sandboxing Patterns That Don't Leak Credentials

Comments
9 min read
When Your Tool Returns Garbage, Agents Loop Forever. Here's the 30-Line Guard.
Cover image for When Your Tool Returns Garbage, Agents Loop Forever. Here's the 30-Line Guard.

When Your Tool Returns Garbage, Agents Loop Forever. Here's the 30-Line Guard.

Comments
7 min read
Multi-Turn Agent Context Window: 4 Truncation Strategies That Don't Break the Agent
Cover image for Multi-Turn Agent Context Window: 4 Truncation Strategies That Don't Break the Agent

Multi-Turn Agent Context Window: 4 Truncation Strategies That Don't Break the Agent

Comments
9 min read
Streaming Tool Calls with Anthropic's API: The Buffer Pattern Nobody Documents
Cover image for Streaming Tool Calls with Anthropic's API: The Buffer Pattern Nobody Documents

Streaming Tool Calls with Anthropic's API: The Buffer Pattern Nobody Documents

Comments
7 min read
Agent Tool Selection Accuracy: 3 Prompt Patterns That Move It 20%
Cover image for Agent Tool Selection Accuracy: 3 Prompt Patterns That Move It 20%

Agent Tool Selection Accuracy: 3 Prompt Patterns That Move It 20%

Comments
8 min read
WordPress in 2026: Running a Modern PHP 8.4 Stack Without Going Insane
Cover image for WordPress in 2026: Running a Modern PHP 8.4 Stack Without Going Insane

WordPress in 2026: Running a Modern PHP 8.4 Stack Without Going Insane

Comments
9 min read
The 5 Most Common PHP Security Bugs in 2026 (And the One-Liner Fix for Each)
Cover image for The 5 Most Common PHP Security Bugs in 2026 (And the One-Liner Fix for Each)

The 5 Most Common PHP Security Bugs in 2026 (And the One-Liner Fix for Each)

Comments
8 min read
Argon2id Is the Default Now. Stop Using bcrypt in 2026.
Cover image for Argon2id Is the Default Now. Stop Using bcrypt in 2026.

Argon2id Is the Default Now. Stop Using bcrypt in 2026.

Comments 1
7 min read
Laravel Job Batches vs Symfony Messenger Stamps: A Pattern Comparison
Cover image for Laravel Job Batches vs Symfony Messenger Stamps: A Pattern Comparison

Laravel Job Batches vs Symfony Messenger Stamps: A Pattern Comparison

Comments
8 min read
PHP 8.4 Lazy Objects: When They Beat Doctrine Proxies (and How to Migrate)
Cover image for PHP 8.4 Lazy Objects: When They Beat Doctrine Proxies (and How to Migrate)

PHP 8.4 Lazy Objects: When They Beat Doctrine Proxies (and How to Migrate)

Comments
8 min read
PHP and gRPC: The Bidirectional Streaming Pattern Most Tutorials Skip
Cover image for PHP and gRPC: The Bidirectional Streaming Pattern Most Tutorials Skip

PHP and gRPC: The Bidirectional Streaming Pattern Most Tutorials Skip

Comments
9 min read
The Composer Trick That Cuts Deploy Time by 70% (and Why Nobody Uses It)
Cover image for The Composer Trick That Cuts Deploy Time by 70% (and Why Nobody Uses It)

The Composer Trick That Cuts Deploy Time by 70% (and Why Nobody Uses It)

Comments
8 min read
Laravel Pint vs PHP-CS-Fixer: Why I Stopped Configuring My Linter
Cover image for Laravel Pint vs PHP-CS-Fixer: Why I Stopped Configuring My Linter

Laravel Pint vs PHP-CS-Fixer: Why I Stopped Configuring My Linter

Comments
7 min read
Laravel Pint vs PHP-CS-Fixer: Why I Stopped Configuring My Linter
Cover image for Laravel Pint vs PHP-CS-Fixer: Why I Stopped Configuring My Linter

Laravel Pint vs PHP-CS-Fixer: Why I Stopped Configuring My Linter

Comments
7 min read
Pest 3 vs PHPUnit 11: 4 Reasons to Switch, 2 Reasons Not To

Pest 3 vs PHPUnit 11: 4 Reasons to Switch, 2 Reasons Not To

Comments
7 min read
Rector in 2026: The 6 Rules That Pay for Themselves on Any Legacy Codebase
Cover image for Rector in 2026: The 6 Rules That Pay for Themselves on Any Legacy Codebase

Rector in 2026: The 6 Rules That Pay for Themselves on Any Legacy Codebase

Comments
9 min read
PHPStan Level 10: Why You Should Stop at 8 (and What 10 Actually Costs You)
Cover image for PHPStan Level 10: Why You Should Stop at 8 (and What 10 Actually Costs You)

PHPStan Level 10: Why You Should Stop at 8 (and What 10 Actually Costs You)

Comments
7 min read
Blackfire vs Xdebug Profiling: Which One Tells You the Truth at Production Scale
Cover image for Blackfire vs Xdebug Profiling: Which One Tells You the Truth at Production Scale

Blackfire vs Xdebug Profiling: Which One Tells You the Truth at Production Scale

Comments
8 min read
The php-fpm Tuning Cheat Sheet: 5 Settings That Decide Your p99
Cover image for The php-fpm Tuning Cheat Sheet: 5 Settings That Decide Your p99

The php-fpm Tuning Cheat Sheet: 5 Settings That Decide Your p99

Comments
8 min read
PHP JIT in 2026: When It Helps (Spoiler: Rarely the Web Path)
Cover image for PHP JIT in 2026: When It Helps (Spoiler: Rarely the Web Path)

PHP JIT in 2026: When It Helps (Spoiler: Rarely the Web Path)

Comments
8 min read
FrankenPHP vs RoadRunner vs Swoole: A Production Benchmark (2026 Edition)
Cover image for FrankenPHP vs RoadRunner vs Swoole: A Production Benchmark (2026 Edition)

FrankenPHP vs RoadRunner vs Swoole: A Production Benchmark (2026 Edition)

Comments
9 min read
PHP OPcache Preloading in 2026: The 3 Mistakes That Make It Slower
Cover image for PHP OPcache Preloading in 2026: The 3 Mistakes That Make It Slower

PHP OPcache Preloading in 2026: The 3 Mistakes That Make It Slower

Comments
8 min read
The Symfony DI Compiler Pass Every Senior Dev Should Know
Cover image for The Symfony DI Compiler Pass Every Senior Dev Should Know

The Symfony DI Compiler Pass Every Senior Dev Should Know

Comments
8 min read
Symfony Lock Component: Distributed Locks in 50 Lines (No Redis Required)
Cover image for Symfony Lock Component: Distributed Locks in 50 Lines (No Redis Required)

Symfony Lock Component: Distributed Locks in 50 Lines (No Redis Required)

Comments
8 min read
Symfony Mercure: Server-Sent Events at Scale Without WebSockets
Cover image for Symfony Mercure: Server-Sent Events at Scale Without WebSockets

Symfony Mercure: Server-Sent Events at Scale Without WebSockets

Comments
9 min read
The Symfony Workflow Component: The State Machine PHP Quietly Ships
Cover image for The Symfony Workflow Component: The State Machine PHP Quietly Ships

The Symfony Workflow Component: The State Machine PHP Quietly Ships

Comments
8 min read
Symfony API Platform vs Laravel API Resources: When Each Earns Its Keep
Cover image for Symfony API Platform vs Laravel API Resources: When Each Earns Its Keep

Symfony API Platform vs Laravel API Resources: When Each Earns Its Keep

Comments
10 min read
Symfony Messenger vs Laravel Queues: A Real Benchmark and a Decision Guide
Cover image for Symfony Messenger vs Laravel Queues: A Real Benchmark and a Decision Guide

Symfony Messenger vs Laravel Queues: A Real Benchmark and a Decision Guide

Comments
9 min read
The Laravel Service Container Trick That Cuts Boot Time by 40%
Cover image for The Laravel Service Container Trick That Cuts Boot Time by 40%

The Laravel Service Container Trick That Cuts Boot Time by 40%

Comments
8 min read
loading...