Push notifications are a delivery problem, not a feature
Token lifecycle, permission timing, silent-notification budgets and cold-start routing — the parts of push that break after launch rather than during it.
What we have learned building software for clients — architecture decisions, trade-offs, and the things we would do differently.
Token lifecycle, permission timing, silent-notification budgets and cold-start routing — the parts of push that break after launch rather than during it.
Caching reads is easy. The cost is in write conflicts, record identity, clock skew and background execution — and none of it is a library decision.
What genuinely shares between iOS and Android, where cross-platform quietly costs you, and when a limited budget still points towards writing native code.
The engineering behind a rewards product: ledger integrity, tenant-scoped authorisation, QR redemption, wallet passes, scheduled jobs and insider fraud.
What it takes to add a model to a live Express app: staging output before it reaches production data, per-attempt timeouts, cost control and cheap evaluation.