
Pure Functions in JavaScript
Pure functions make JavaScript easier to test, reason about, and reuse. This guide explains what purity means and why it matters in everyday code.
Articles from more than two decades of building, rebuilding, debugging, and leading web projects.

Pure functions make JavaScript easier to test, reason about, and reuse. This guide explains what purity means and why it matters in everyday code.

The Vue 3 Composition API explained with practical TypeScript examples, refs, composables, reactivity, and when the pattern genuinely helps larger components.

min()In CSS, `min()` function allows us to set the smallest value from a set as the value of a CSS property. This can be hugely useful in responsive development.

Test JSX‑driven content in Cypress by comparing rendered output, extracting text, handling order, avoiding brittle assumptions, and respecting performance.

Angular change detection explained through zone triggers, OnPush, signals, template cost, manual checks, and practical rendering optimisation at scale.

Why view source stopped being enough for modern web checks, and how rendered HTML, hydration, metadata, schema, crawl paths, and client output changed audits.

Validate parentheses input in TypeScript with a stack, checking bracket order, matching pairs, real parser‑style use cases, and alternative approaches.

calc()A discussion on how to use CSS calc() for dynamic calculations directly within your styles. Learn to mix units, perform calculations, and improve responsivity.

.then() in Modern JavaScript.then() still matters in modern JavaScript. This guide explains promise chaining, return values, and why Promise.prototype.then() remains useful.

Understanding `stopPropagation` and `preventDefault` is key to handling events in JavaScript. Here, I explore their differences and when to use each.

An exploration of solutions to the 'Letter Combinations of Phone Number' problem using front‑end and TypeScript: recursion, backtracking, and iteration.

vh and vwCreate custom viewport units with CSS variables and JavaScript to avoid mobile 100vh bugs caused by browser chrome, keyboards, and visible height changes.

Add seeded randomisation to an SSR Gatsby project, keeping content order deterministic across builds whilst still rotating destination‑style content.

Convert Roman numerals to integers in JavaScript, covering subtractive notation, invalid input caveats, and a clear TypeScript implementation.

Convert integers to Roman numerals in JavaScript, covering symbol rules, greedy matching, edge cases, and a clear TypeScript implementation.

Automate copyright year updates across JavaScript, React, Angular, Vue, jQuery, PHP, and WordPress so footers do not go stale each January across stacks.

setInterval()A discussion about using JavaScript's setInterval for repetitive tasks. Manage intervals effectively and understand best practices for time‑bound executions.


Solve regular expression matching with recursive and dynamic‑programming context, covering dot and star behaviour, edge cases and TypeScript.

Solve Container With Most Water in TypeScript using the two‑pointer pattern, with pointer movement, complexity, edge cases, and testable logic explained.

How much software engineers make in the UK, with realistic late‑2023 salary ranges for graduate, mid‑level, senior, London, and sector‑driven roles.