
Understanding the Difference Between <b> and <strong>
The `<b>` and `<strong>` tags both make text bold, but they serve very different purposes and convey different meaning. Here, I explain these differences.
Articles
Front‑end web development is my personal niche, it is the art of creating visual and interactive elements for a website, including layout, design, and interactivity, using HTML, CSS, and JavaScript.
Below you will find a subset of articles from my blog specifically about Front‑End Development. This is an area that I have worked with for many years, and have managed to write about quite a few times. There are three hundred thirty‑seven collected together for you below.

<b> and <strong>The `<b>` and `<strong>` tags both make text bold, but they serve very different purposes and convey different meaning. Here, I explain these differences.

Optimise Vue.js performance with lazy loading and code splitting, covering route‑level chunks, async components, bundle strategy, measurement, and UX.

Middleware in Next.js provides a straightforward way to protect routes and manage user authentication. Here, I show how to implement effective route protection.

place‑contentUse CSS place‑content to align grid and flex content, comparing align‑content, justify‑content, place‑items, syntax, examples, and layout limits.

Fixed quote, day rate, and retainer pricing for senior web development, explained through scope, risk, delivery, ownership, and platform quality.

place‑itemsCSS `place‑items` is a shorthand property that aligns items inside grid and flex containers. Here, we discuss its syntax, use cases, and practical examples.

Template‑driven vs. reactive Angular forms, and how to choose the right model for validation, scale, testing, and maintainable form logic in real apps.

Converting between camel case, snake case, kebab case is a common task in JavaScript. Here, I explore methods using regular expressions and string manipulation.

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.

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

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

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

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

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.

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.