Abdulmuiz A.
Blog

Notes from real projects.

Short write-ups on specific engineering decisions — what the problem actually was, and why I built it the way I did.

Mobile engineeringAug 20269 min read

Forced Updates Without a Gun to Your Head

Three buckets, not one hammer: force what's unsafe to leave, nudge everything else, and fail open when the update-checker itself can't reach the network. A version gate driven by Remote Config, and the release loop that keeps the gun holstered.

Read post →

Your API is slow. Stop guessing.

The first ten minutes of a slow-API investigation should be one command, not a meeting. The curl one-liner that turns 'it feels slow' into a number you can actually argue with.

5 min

₦104,000 or ₦1,040: When Two Formatters Disagree on Money

The same number appeared twice on our admin dashboard, a hundred times apart. The bug was in the unstated unit nobody named.

6 min
Random post

Your API is slow. Stop guessing.

The first ten minutes of a slow-API investigation should be one command, not a meeting. The curl one-liner that turns 'it feels slow' into a number you can actually argue with.

Read →
Quote cards

Take one with you.

Pull-quotes from the posts, rendered as images. Copy the link and post it anywhere — every card is a static file, so it'll load the same in five years.

“Pick the layer that owns retries. It owns the message. Everyone else: be quiet.”

Your Retries Are Retrying Your Toasts

“A migration that works on a fresh install tells you nothing. Only the upgrade path counts, and the database can prove it if you ask.”

The Migration That Left a Dangling Foreign Key

“If a failure mode is going to be common in production, design for it as the default case, not the fallback case.”

Designing Offline-First Before You Need It

“Every money value is stored in its smallest unit, and the unit is written in the type, not a comment.”

₦104,000 or ₦1,040: When Two Formatters Disagree on Money

“An update gate is three buckets: force what's unsafe to leave, nudge what's worth moving, and default to letting everyone through when you can't prove otherwise.”

Forced Updates Without a Gun to Your Head

“The worst answer in performance work is “it was fine when I tested it”. It kills the conversation without moving it forward, and it's usually wrong because the slowness was never on your desk.”

Your API is slow. Stop guessing.