
The JavaScript Event Loop: A Beginner's Guide
The JavaScript event loop manages asynchronous tasks in a single‑threaded environment. I explore how it works with the call stack, task queue, and microtasks.
Articles
When I started in web development (twenty‑three years ago), cross‑browser compatibility was a hot topic. Many days and hours were lost cursing Microsoft for interpreting the specs differently to other browsers. The work has changed rather than disappeared: these articles are about feature support, progressive enhancement, and debugging the awkward differences that remain without pretending every browser must behave identically.

The JavaScript event loop manages asynchronous tasks in a single‑threaded environment. I explore how it works with the call stack, task queue, and microtasks.

Cross‑browser compatibility ensures a consistent user experience across different browsers. Best practices, CSS, and JS techniques, and testing strategies.

Integrating CMSes with HTML, CSS, and JavaScript enables dynamic, flexible content management. Here, I explore best practices, performance tips, and SEO.

Use CSS reduced‑motion preferences without losing content or feedback, with static‑first and targeted override patterns bounded to Safari‑first 2018 support.

Use passive event listeners safely: learn when touch and wheel handlers block scrolling, when preventDefault() is required, and why handler cost is separate.

Optimise HTML markup for SEO and accessibility with semantic elements, heading structure, alt text, clean code, anchor text, and crawler‑friendly structure.

Understand live HTMLCollection views, static NodeList snapshots, mutation‑skipping bugs, Array.from() conversion, and safe DOM iteration in 2016.

Use HTML constraint validation attributes and APIs to improve client‑side form feedback without replacing accessible errors or server‑side checks.

Use feature detection in front‑end work by checking browser capability, choosing enhancement or fallback paths, and avoiding fragile user‑agent assumptions.

Write safer JavaScript for older browsers by checking support, avoiding fragile assumptions, containing failures, and keeping core interactions usable.

The JavaScript prototype chain underpins inheritance, enabling object property sharing. Here, I explore its workings, property searching, and quirks.

Create object URLs for local file previews, revoke them at the right time, and avoid retaining Blob data too long or breaking a browser consumer.
A bug in the WebKit engine that only affects website Retina screen devices means that setting a zero‑blur filter in CSS isn't as easy as it should be.

Choose between textContent and innerHTML safely, handle Internet Explorer's innerText fallback, and know exactly when untrusted HTML needs sanitisation.

removeeventlistener() Needs the Same Function ReferenceUnderstand why removeEventListener needs the original callback reference, how anonymous functions differ, and what Internet Explorer required in 2010.