Software with a purpose.
AI, integration and development in the context of real work. Articles for people making decisions about business systems.
20 articles

Website accessibility starts with a real task
Finding a document, completing a form and receiving a response. Accessibility needs to work throughout the journey, across different ways of using the site.

An AI agent inside a business system: who permits its actions?
When AI reads documents and calls tools, source content cannot define its permissions. Design narrow operations, specific approvals and prompt injection tests.

Core Web Vitals: a fast website matters after loading too
LCP, INP and CLS in actual use. Distinguish a lab test from visitor experience and choose changes that improve reading and interaction.

An older system: what to keep and what to change first
A complete replacement may be the right approach. The decision needs an understanding of dependencies, critical processes and the options for gradual change.

A new mobile version and an older API: preparing a safe release
Users do not update a mobile app simultaneously. Plan API compatibility, gradual distribution, error monitoring and a response to release problems.

Database migration during operation: compatibility, locks and rollback
Expanding a PostgreSQL schema in stages, backfilling data in batches and checking locks. What must be true before you remove the old column.

Mobile sign-in: OAuth, PKCE and session renewal
Sign users in through the system browser, protect the return to the app and handle expired tokens without repeated or concurrent login attempts.

Enterprise RAG: permissions and tests before polished answers
Preserving document permissions in retrieval, handling prompt injection and measuring retrieval separately from the quality of generated answers.

Secure file uploads: from the form to storage
A PDF extension and a successful upload are not enough. Design quarantine, content checks, private links and permissions for business portal attachments.

Push notifications: sent, delivered and read are different events
Why a successful FCM or APNs response is not enough. Designing a notification history, message expiry, device registrations and delivery measurements for iOS and Android.

Monitoring with OpenTelemetry: where did the order go?
The API reports success but the order is missing from the ERP. Connect metrics, logs and traces across a queue to find the failed processing step.

An app without a signal: designing offline data and synchronisation
Local data, pending operations, retries and conflicts. A practical design for a mobile app that preserves a user's work when the connection fails.

MySQL backups: what a restore exercise must verify
A green backup job does not prove the service can be recovered. RPO, RTO, binary logs and a practical check of the database, files and application.

Production webhooks: signatures, duplicates and recovery
Separating event receipt from processing, controlling duplicate deliveries and repairing a transfer without repeating its business effects.

A slow order list: EXPLAIN, indexes and pagination
Query count, unsuitable indexes and a large OFFSET can slow a list down. Measure the bottleneck and design predictable PostgreSQL pagination.

API idempotency: retrying a request without a second order
A timeout does not confirm failure. Designing an idempotent operation, protecting concurrent requests in the database and testing duplicate writes.

Transactional outbox: when the database commits but the message fails
An order can exist while the warehouse never receives its event. Outbox design, message identity, acknowledgement boundaries and recovery after worker failure.

ERP and CRM: agree on data rules before connecting them
An API is one part of an integration. You also need to know which system decides, what is transferred and how a failed transfer is fixed.

API security: keeping each customer's data separate
A valid login does not decide which order a user may open. Object checks, verified tenant context and tests for APIs, exports and background jobs.

Your first AI pilot: choose a task you can evaluate
A useful starting point has available source material, a person responsible for the process and a clear way to tell whether the result helped.
Have a process
that needs to change?
Let’s start with how you work today. We’ll choose the technology around it.
