
Rewrite, Refactor, or Strangle? A Practical Decision Framework
A practical framework for choosing rewrite, refactor, or strangler paths, based on risk, delivery pressure, change cost, and organisational appetite.
Articles
The guides are the practical part of this archive: working explanations for a specific web development problem, written to show the decision as well as the answer. The subject varies, but the aim is consistent: enough context to use the technique sensibly rather than copy it blindly.

A practical framework for choosing rewrite, refactor, or strangler paths, based on risk, delivery pressure, change cost, and organisational appetite.

Structure technical AEO content for direct answers without FAQ spam, using extractable passages, visible text, schema discipline, and topic depth.

Build an LRU cache in TypeScript with a hash map and doubly linked list, then compare it with a simpler JavaScript Map implementation and O(1) operations.

How to make content easier for generative engines to trust, with clearer claims, stronger authorship, better sourcing, and structure that reduces ambiguity.

Diagnose Sass colours that survive compilation but break in Next.js production CSS when minification creates invalid mixed‑unit legacy rgb() values.

Mastering Server Components in Next.js, including client boundaries, data fetching, caching, streaming, and the mistakes that make App Router code messy.

Maximum Subarray and Kadane's Algorithm explained with TypeScript, showing how a linear pass tracks current and best sums across positive and negative values.

Converting objects to query strings is essential for handling URLs in JavaScript. Here, I explore encoding, parsing, and managing query parameters in Next.js.

ETag and Last-ModifiedETag and Last-Modified drive conditional HTTP requests and 304 responses. See how precedence, weak validators, CDNs, and cache policy affect revalidation.

Best practices for managing environment variables in Next.js, so secrets stay server‑side and deployments do not freeze the wrong values at build time.

Approach production observability in Next.js with contextual logs, traces, release markers, client errors, cache signals, build visibility, and business data.


Right to Represent agreements for UK contractors, covering recruiter pressure, duplicate submissions, hybrid working changes, and safer wording before signing.

try, catch, and finallyGo beyond basic try/catch in JavaScript with finally, custom errors, async error handling, testing, user‑facing failures, and defensive‑code traps.

Slow Gatsby builds need a clear choice: optimise plugins, data, and images in place, or move to Next.js when publishing and cache limits justify it.

Audit third‑party script cost across GTM, consent tools, analytics, experimentation, and personalisation, without breaking measurement or business workflows.

A practical Gatsby to Next.js migration checklist covering routes, data, rendering, plugins, images, redirects, preview, sitemaps, and SEO validation.

A practical Contentful to Sanity migration checklist for Next.js sites, covering schemas, references, preview, redirects, metadata, and SEO checks.