The Abati Blog

Insights & Engineering

Practical writing on software development, WhatsApp Business API, AI tooling, and the products we build at Abati Technology.

Engineering

The N+1 Query Problem: Why Your App Gets Slower as Your Data Grows

What the N+1 query problem is, how to spot it in your logs, and practical ways to fix it with joins, eager loading, and batching.

September 10, 2026 · 3 min read
Engineering

Graceful Shutdown: The Deploy Bug You Only See in Production

Why processes that die mid-request cause dropped orders and duplicate work — and how to drain connections cleanly before every restart.

September 7, 2026 · 3 min read
Engineering

Dead-Letter Queues: What to Do With Messages You Can't Process

Retries alone won't save a broken message. Learn how dead-letter queues catch poison messages, and how to triage, alert, and replay them safely.

September 3, 2026 · 3 min read
Engineering

Health Checks That Tell the Truth: Liveness, Readiness, and Lying Endpoints

Most /health endpoints return 200 while the app is broken. How to design liveness and readiness checks that reflect what users actually experience.

August 31, 2026 · 3 min read
Engineering

Choose Boring Technology: Why Small Teams Win With Unexciting Stacks

New frameworks are fun, but small teams ship faster on proven, boring tech. How to spend your innovation tokens where they actually matter.

August 27, 2026 · 3 min read
Engineering

Rate Limiting: Protecting Your API Without Punishing Good Users

A practical guide to API rate limiting for small teams: algorithms, headers, key choices, and how to fail politely instead of breaking clients.

August 24, 2026 · 3 min read
Engineering

Circuit Breakers: How to Stop One Failing Service From Taking Down Everything

When a dependency goes down, retries make it worse. Learn how circuit breakers help small systems fail fast, recover gracefully, and stay online.

August 20, 2026 · 3 min read
WhatsApp API

Why WhatsApp Templates Get Rejected — and How to Write Ones That Pass

A practical guide to writing WhatsApp message templates that clear Meta's review the first time: categories, variables, and common rejection traps.

August 17, 2026 · 3 min read
Engineering

A Backup You've Never Restored Is Just a Hope

Why untested backups fail small teams, and a practical restore-testing routine that catches broken dumps before a real disaster does.

August 13, 2026 · 3 min read
Engineering

Structured Logging: Make Your Logs Answer Questions, Not Just Tell Stories

Why small engineering teams should switch from free-text logs to structured JSON logging, and how to do it without heavy tooling.

August 10, 2026 · 3 min read
Payments

Refunds Are Transactions, Not Edits: A Better POS Payment Model

Learn how to model POS refunds as linked financial transactions for safer balances, clearer audits, and reliable payment reconciliation.

August 6, 2026 · 3 min read
Product

Mobile App Analytics Without the Vanity Metrics

A practical framework for choosing mobile app metrics that reveal activation, retention, reliability, and the next product decision.

August 3, 2026 · 3 min read
Engineering

Zero-Downtime Database Migrations for Small Engineering Teams

Learn a practical expand-and-contract workflow for changing production databases safely without freezing releases or breaking old application code.

July 30, 2026 · 3 min read
Product

Offline-First POS: Designing Retail Software That Survives Bad Connectivity

Learn how to design an offline-first POS for small businesses, with safe sync, conflict handling, payments, and operational recovery.

July 27, 2026 · 3 min read
WhatsApp API

Design WhatsApp Automation for the Moment a Human Takes Over

Build WhatsApp automation that knows when to stop, preserves context, and hands complex customer conversations to the right person.

July 23, 2026 · 3 min read
Engineering

The Smallest Useful CI Pipeline for a Small Engineering Team

A practical CI blueprint for small teams: fast checks, dependable tests, and production safeguards without building a maintenance burden.

July 20, 2026 · 3 min read
Engineering

The Transactional Outbox Pattern: Stop Losing Events Between Systems

Learn how the transactional outbox pattern prevents lost events when an application must update its database and notify another system.

July 16, 2026 · 3 min read
WhatsApp API

Verify Before You Process: Securing WhatsApp Cloud API Webhooks

Learn how to verify WhatsApp webhook signatures, preserve raw request bodies, reject replays, and keep message processing secure.

July 13, 2026 · 3 min read
Payments

Never Store Money as a Float: Representing Currency in Code

Floating-point math quietly corrupts money. Here is how to store, calculate, and round currency correctly using integer minor units.

July 9, 2026 · 3 min read
Developer Tools

How to Write Prompts That Get Better Code From AI

AI coding assistants reward clear communication, not magic words. Here's how context, examples, and constraints get you better code on the first try.

July 6, 2026 · 3 min read
Engineering

Correlation IDs: How to Trace One Request Across Your Whole Stack

When a payment or message goes missing, a correlation ID turns hours of cross-service log guessing into a two-minute search. Here's how to add one.

July 2, 2026 · 3 min read
WhatsApp API

Stop Asking Customers to Type: Use WhatsApp Interactive Messages

Reply buttons and list messages cut friction, reduce errors, and boost conversion on the WhatsApp Business API. Here's how to use them well.

June 29, 2026 · 3 min read
Engineering

Timeouts: The Resilience Setting Almost Everyone Forgets

Most outages begin with a request that never times out. Here's how to set deadlines that stop one slow dependency from taking down your whole system.

June 25, 2026 · 3 min read
Payments

Payment Reconciliation: Why Your Numbers Never Quite Match

A practical guide to payment reconciliation for small teams: why your ledger and your gateway disagree, and how to close the gap without losing your mind.

June 22, 2026 · 3 min read
Engineering

Retries Done Right: Backoff, Jitter, and the Thundering Herd

A naive retry loop can turn a small outage into a full one. Learn how exponential backoff and jitter keep a failing system from getting worse.

June 18, 2026 · 3 min read
Developer Tools

Reviewing AI-Generated Code: A Skill Worth Practicing

AI writes code fast, but shipping it safely is a human skill. A practical review checklist for engineers using Copilot and other AI tools.

June 15, 2026 · 3 min read
Engineering

Feature Flags: Why Deploying Code Shouldn't Mean Releasing It

Feature flags let you ship code to production without exposing it to users, turning risky launches into calm, reversible toggles you control.

June 11, 2026 · 3 min read
Payments

Preventing Double Charges: A Practical Guide to Idempotency

A timed-out payment request gets retried and your customer is charged twice. Idempotency keys are the simple pattern that prevents it. Here's how.

June 8, 2026 · 3 min read
WhatsApp API

Building Reliable WhatsApp Webhooks That Never Drop a Message

Practical patterns for handling WhatsApp Cloud API webhooks reliably: fast acknowledgment, idempotency, retries, and ordering for production systems.

June 5, 2026 · 3 min read
WhatsApp API

WhatsApp Quality Rating and Messaging Limits: Protect Your Number

Your WhatsApp Business number has a quality rating that controls how many people you can reach. Here is how it works and how to keep it green.

June 5, 2026 · 3 min read
Product

QRIS Explained: How One QR Code Unified Indonesian Payments

QRIS lets any customer pay any merchant with a single QR standard. Here's how it works and why it matters for small businesses.

June 2, 2026 · 2 min read
Product

Retro Gaming and the Quiet Work of Preservation

Classic games from the GBA, DS, and PSP eras are slipping out of reach. Here's why emulation and accessibility matter.

June 1, 2026 · 2 min read
Engineering

Building Software That Ships: Lessons From a Small Team

Shipping consistently isn't about working harder. It's about ruthlessly cutting scope and shortening the loop between idea and production.

May 30, 2026 · 2 min read
Engineering

Why WhatsApp Notifications Outperform Email — and When They Don't

WhatsApp open rates dwarf email. But channel choice is about more than open rates. Here's a clear-eyed comparison.

May 28, 2026 · 2 min read
Developer Tools

How Students Can Get the Most Out of GitHub Copilot

Copilot is more than autocomplete. Here's how students and early-career developers can use it to learn faster, not just type less.

May 26, 2026 · 2 min read
WhatsApp API

Template vs. Session Messages: Getting WhatsApp Pricing Right

WhatsApp billing is built around conversation categories and the 24-hour window. Here's how to model your costs before you scale.

May 23, 2026 · 2 min read
WhatsApp API

A Practical Guide to the WhatsApp Business API in 2026

What the WhatsApp Business API actually is, how template and session messaging differ, and how to roll it out without getting your number flagged.

May 20, 2026 · 2 min read