Insights
What we learned
doing the work
Engineering notes, architecture decisions and post-mortems, written by the people who shipped the thing. No thought leadership.
- Security
- AI
- Design
- Cloud
- Engineering
- Strategy
- Security
SSRF is an identity problem, not a network problem
A URL allowlist on Northwind's webhook feature was defeated by DNS rebinding in under a minute. Validating hostnames cannot work; validating the socket can. And the deeper fix is internal services that refuse unauthenticated callers.
James Fairhurst · 10 min read
- AI
Write the evaluation set before you write the prompt
Most language-model features fail because nobody agreed what correct looks like. A labelled set of 200 real cases, scored field by field and run in CI, settles the argument before it reaches a customer.
Rohan Mehta, Principal Engineer, AI Practice · 9 min read
- Security
Rotating database credentials without a maintenance window
Aldridge Risk had database passwords three years old because rotation meant downtime. The two-role pattern, why connection pools make rotation hard, and how to time the revoke so it is safe rather than hopeful.
Nikhil Deshpande · 9 min read
- Design
Designing for density: software experts stare at all day
A trading desk, a dispatch board and an auction floor have nothing in common with a consumer app. Whitespace becomes a tax, the keyboard beats the mouse, and every colour you spend on decoration is one you cannot spend on a breach.
Elena Marsh, Design Director · 9 min read
- Cloud
CPU limits were costing us latency and money at the same time
Corvus Logistics ran 96 nodes for a workload that fits on 60. The throttling metric nobody was watching explained both the node count and a 810ms p99. What CFS quota does, and how to set requests from evidence.
Rahul Menon · 11 min read
- Engineering
The lock queue is the deploy risk: online schema change on Postgres
At Kestrel Industrial a two-second ALTER TABLE took the shop-floor API down for six minutes. The cause was head-of-line blocking in the Postgres lock queue. Expand-contract, lock_timeout, and how to make backfills boring.
Eleanor Whitcombe · 10 min read
- Cloud
Tail latency on shared Postgres: what pooling mode actually costs you
p99 sat at 900ms while the database ran at 30% CPU. The queue was in the pooler, not the engine. A walk through pool sizing arithmetic, what transaction mode silently breaks, and per-tenant fairness.
Aditya Bhattacharya · 12 min read
- AI
Guardrails are a queue, not a filter
Blocking a bad model output is the easy half. The design question is what happens to the four per cent you block, who reads it, how fast, and what they are allowed to do about it.
Ananya Kulkarni, Head of Applied AI · 8 min read
- Strategy
How enterprise software actually gets bought
Between six and eleven people can say no and none of them can say yes alone. Understanding the security review, the pilot and the internal memo is worth more to a delivery plan than any feature comparison.
James Okonkwo, Managing Partner · 10 min read
- Engineering
Idempotency keys do not make retries safe
A duplicate payout on Meridian Exchange traced back to an idempotency key written in a different transaction from the effect it guarded. The storage model, the concurrency case most implementations miss, and the metric that proves it works.
Priya Raghunathan · 11 min read
- AI
Set the price ceiling before you build the feature
Pick a unit — a ticket, an invoice, a search — and a number of pence it may not exceed. Everything about retrieval, routing and caching follows from that constraint, and features that cannot meet it are cheaper to cancel early.
Rohan Mehta, Principal Engineer, AI Practice · 8 min read
- Design
The cost of a wrong click: undo, confirmation and audit
Confirmation dialogs stop almost nothing — users dismiss them in under two seconds. Classifying actions by reversibility, and building the data model to support correction, prevents far more damage than another Are you sure.
Elena Marsh, Design Director · 8 min read

