Category: Software Development
-
Push notifications: the engineering decisions behind a feature that looks simple
Push notifications look like a tick-box on a spec sheet. Delivery guarantees, opt-in design and vendor choice behind them are…
-
WebSockets, Server-Sent Events or polling: choosing a real-time transport
A practical way to choose between WebSockets, Server-Sent Events and polling for live features, based on who needs to push…
-
Idempotency keys: designing APIs that don’t double-charge or double-book
Network retries can silently double-charge a customer or double-book a slot. How idempotency keys work, and the five mistakes that…
-
Syncing data across devices: last-write-wins, CRDTs or a server of record
How to choose between last-write-wins, field merging and CRDTs when an app has to keep data in sync across a…
-
Postgres full-text search or Elasticsearch: choosing a search engine for your product
How to decide between PostgreSQL’s built-in full-text search and a dedicated engine like Elasticsearch, based on what your product actually…
-
Message queue or no message queue: choosing async infrastructure for a small team
SQS, RabbitMQ, Kafka, or just a database table: how a small engineering team should choose async infrastructure without overbuilding.
-
Stripe or GoCardless: the billing engineering decisions that matter more than the fees
Choosing Stripe or GoCardless is the easy part. The webhooks, state machine and dunning logic underneath decide whether your billing…
-
Webhooks or polling: choosing how your systems talk to third parties
Webhooks look like the modern default, but they are not always the right one. A practical guide to choosing an…
-
Technical debt: how to decide what to fix, what to work around, and what to leave alone
A practical framework for founders and CTOs deciding which technical debt is worth fixing now, which to work around, and…
-
Native, cross-platform or PWA: choosing a mobile app architecture
How to choose between native, Flutter/React Native and a PWA for a new mobile app, based on device access and…