
Lazy Loading in Angular: Optimising Performance
How lazy loading in Angular improves performance, where route‑level splitting helps most, and how to avoid messy boundaries and loading states in larger apps.
Articles from more than two decades of building, rebuilding, debugging, and leading web projects.

How lazy loading in Angular improves performance, where route‑level splitting helps most, and how to avoid messy boundaries and loading states in larger apps.

Temporal Dates and Times APIA practical look at JavaScript Temporal, why Date is awkward, and how clearer date, time, time zone, duration, and parsing APIs improve modern code.

Next.js vs. Remix compared properly, across routing, data loading, mutations, caching, and the architectural trade‑offs teams actually feel in production.

Compare horizontal and vertical scanning for Longest Common Prefix in TypeScript, including complexity, edge cases and when each method is clearer.

Solve Merge Intervals in TypeScript by sorting ranges, merging overlaps, handling touching intervals, preserving inputs, and avoiding common mistakes.

:where() FunctionThe CSS `where()` function groups selectors without specificity, simplifying overrides. Here, I explain its use, benefits, and why it can reduce code clarity.

Angular signals explained properly, from computed values and effects to where they simplify state, templates, and change detection without replacing RxJS.

Using Companies House data to generate speculative email addresses is illegal under GDPR and PECR. I explain why personal email misuse violates privacy laws.

How Vue Suspense handles async components and loading states, where it helps, where it falls short, and what still needs extra care in production.

A technical discussion about the key differences between declarative and imperative programming, focusing on development with JavaScript, ES6, and React.

How to solve Product of Array Except Self without division, using prefix and suffix products to keep the logic linear and interview‑safe in TypeScript.

Currying transforms functions into a sequence of single‑argument calls. An exploration into implementation, benefits, and comparison to partial application.

nth Node from the End of a ListHow to remove the Nth node from the end of a linked list in TypeScript. Here we break down and explore a simple double‑pass and an efficient single‑pass method.

How to build custom directives in Angular when DOM behaviour belongs outside a component, and how to keep selectors and scope readable in larger templates.

Why Gatsby and Contentful worked well together for static sites, what made the model productive, and why teams later reassessed build time and fit.

A candid look at the OWASP Top Ten for web engineers, covering the 2021 risks, front‑end boundaries, platform decisions, and practical next steps.

Distinguishing two approaches to detect palindrome numbers: the intuitive string method vs. the optimised mathematical technique, highlighting their merits.

Build design systems for web apps with Figma tokens, Storybook components, npm packages, release discipline, supply‑chain care, and team adoption.

Caching strategies for data fetching in Next.js, including force‑cache, revalidation, stale data trade‑offs, and the debugging traps teams hit in production.

Higher‑Order Components (HOCs) in React wrap components to enhance functionality. Here, I explore how HOCs work, common use cases, and when to use them.

defineProperties()Object.defineProperties() gives you fine‑grained control over JavaScript objects. This guide covers descriptors, defaults, and practical use cases.