Practical writing on software development, WhatsApp Business API, AI tooling, and the products we build at Abati Technology.
Practical rules for storing, converting, and displaying timestamps so your app survives time zones, DST, and future-dated events.
EngineeringOFFSET pagination degrades as tables grow and silently skips or repeats rows. Here's how cursor-based pagination fixes both problems.
EngineeringHow to find missing indexes, when to add them, and why over-indexing hurts — a practical guide to the highest-leverage database fix.
EngineeringWhy every system that moves money or changes permissions needs an append-only audit log — and how small teams can build one without heavy tooling.
EngineeringCron jobs fail quietly: missed runs, overlaps, half-finished work. Practical patterns for making scheduled tasks observable and safe.
WhatsApp APIA practical guide to treating WhatsApp message templates as versioned interfaces, so changes do not silently break customer journeys.
ProductSkip the grand digitization plan. A practical guide for Southeast Asian SMEs to pick one painful workflow, fix it, and build momentum from there.
EngineeringA practical guide to handling API keys, tokens, and passwords in small engineering teams — from .env hygiene to rotation plans that actually get executed.
WhatsApp APIHow to design WhatsApp Business opt-in flows that satisfy Meta's policy, protect your quality rating, and actually earn customer trust.
Developer ToolsAI assistants shine on legacy code: how to use Copilot-style tools to map, explain, and safely change an unfamiliar codebase without breaking it.
EngineeringA practical framework for small teams to take on technical debt deliberately, track it honestly, and pay it down without stopping the roadmap.
EngineeringCaching can make your app fast or quietly wrong. Learn when to cache, how to invalidate safely, and the failure modes to avoid.
EngineeringA practical guide to running blameless postmortems on a small team: what to write down, what to skip, and how to make action items actually happen.
EngineeringWhat 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.
EngineeringWhy processes that die mid-request cause dropped orders and duplicate work — and how to drain connections cleanly before every restart.
EngineeringRetries alone won't save a broken message. Learn how dead-letter queues catch poison messages, and how to triage, alert, and replay them safely.
EngineeringMost /health endpoints return 200 while the app is broken. How to design liveness and readiness checks that reflect what users actually experience.
EngineeringNew frameworks are fun, but small teams ship faster on proven, boring tech. How to spend your innovation tokens where they actually matter.
EngineeringA practical guide to API rate limiting for small teams: algorithms, headers, key choices, and how to fail politely instead of breaking clients.
EngineeringWhen a dependency goes down, retries make it worse. Learn how circuit breakers help small systems fail fast, recover gracefully, and stay online.
WhatsApp APIA practical guide to writing WhatsApp message templates that clear Meta's review the first time: categories, variables, and common rejection traps.
EngineeringWhy untested backups fail small teams, and a practical restore-testing routine that catches broken dumps before a real disaster does.
EngineeringWhy small engineering teams should switch from free-text logs to structured JSON logging, and how to do it without heavy tooling.
PaymentsLearn how to model POS refunds as linked financial transactions for safer balances, clearer audits, and reliable payment reconciliation.
ProductA practical framework for choosing mobile app metrics that reveal activation, retention, reliability, and the next product decision.
EngineeringLearn a practical expand-and-contract workflow for changing production databases safely without freezing releases or breaking old application code.
ProductLearn how to design an offline-first POS for small businesses, with safe sync, conflict handling, payments, and operational recovery.
WhatsApp APIBuild WhatsApp automation that knows when to stop, preserves context, and hands complex customer conversations to the right person.
EngineeringA practical CI blueprint for small teams: fast checks, dependable tests, and production safeguards without building a maintenance burden.
EngineeringLearn how the transactional outbox pattern prevents lost events when an application must update its database and notify another system.
WhatsApp APILearn how to verify WhatsApp webhook signatures, preserve raw request bodies, reject replays, and keep message processing secure.
PaymentsFloating-point math quietly corrupts money. Here is how to store, calculate, and round currency correctly using integer minor units.
Developer ToolsAI coding assistants reward clear communication, not magic words. Here's how context, examples, and constraints get you better code on the first try.
EngineeringWhen 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.
WhatsApp APIReply buttons and list messages cut friction, reduce errors, and boost conversion on the WhatsApp Business API. Here's how to use them well.
EngineeringMost 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.
PaymentsA 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.
EngineeringA 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.
Developer ToolsAI writes code fast, but shipping it safely is a human skill. A practical review checklist for engineers using Copilot and other AI tools.
EngineeringFeature flags let you ship code to production without exposing it to users, turning risky launches into calm, reversible toggles you control.
PaymentsA timed-out payment request gets retried and your customer is charged twice. Idempotency keys are the simple pattern that prevents it. Here's how.
WhatsApp APIPractical patterns for handling WhatsApp Cloud API webhooks reliably: fast acknowledgment, idempotency, retries, and ordering for production systems.
WhatsApp APIYour 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.
ProductQRIS lets any customer pay any merchant with a single QR standard. Here's how it works and why it matters for small businesses.
ProductClassic games from the GBA, DS, and PSP eras are slipping out of reach. Here's why emulation and accessibility matter.
EngineeringShipping consistently isn't about working harder. It's about ruthlessly cutting scope and shortening the loop between idea and production.
EngineeringWhatsApp open rates dwarf email. But channel choice is about more than open rates. Here's a clear-eyed comparison.
Developer ToolsCopilot is more than autocomplete. Here's how students and early-career developers can use it to learn faster, not just type less.
WhatsApp APIWhatsApp billing is built around conversation categories and the 24-hour window. Here's how to model your costs before you scale.
WhatsApp APIWhat the WhatsApp Business API actually is, how template and session messaging differ, and how to roll it out without getting your number flagged.