
Rethinking Carousels: Going Around in Circles
I am not a fan of carousels, although I have built many in my career. Here, I discuss why they hinder UX and SEO, and explore alternatives for engaging content.
Articles from more than two decades of building, rebuilding, debugging, and leading web projects.

I am not a fan of carousels, although I have built many in my career. Here, I discuss why they hinder UX and SEO, and explore alternatives for engaging content.

Falsy and nullish values are not the same in JavaScript. This guide clears up the difference and shows why 0 and empty strings often trip people up.

parseInt in JavaScript: The Significance of RadixLearn why parseInt()'s radix argument matters in JavaScript, how numeric bases affect parsing and why specifying the base makes conversion predictable.

Solve Longest Substring Without Repeating Characters in JavaScript with a sliding window, unique‑character tracking, and substring return variants.

A simple solution to solve the Valid Palindrome problem in JavaScript using the two‑pointer approach in ES6 and TypeScript, checking alphanumeric characters.

Run build‑time SEO checks in Gatsby across routes, metadata, canonicals, headings, sitemaps, schema, redirects, CMS content gaps, and release confidence.

Function.prototype.bind()Explore JavaScript's Function.prototype.bind() method to master function contexts and argument handling, enhancing your code's flexibility and reliability.

When it comes to text‑based sitemaps in Gatsby, gatsby‑plugin‑sitemap falls short. Fortunately, it is straightforward to implement using Node.js and GraphQL.

defineProperty()Unlock the capabilities of JavaScript's Object.defineProperty() for precise property control on objects, enhancing security and data integrity in your code.

atoi): Decoding Strings in JavaScriptConvert strings to integers in JavaScript, covering trimming, signs, invalid input, overflow‑style constraints, and a TypeScript implementation.

slice() vs. splice()Compare JavaScript slice() and splice(), including copying versus mutation, return values, array edits, common confusion, and safer manipulation patterns.

??) Operator in JavaScriptUnderstand JavaScript's nullish coalescing operator, comparing ?? with ||, preserving valid falsy values, and writing clearer default‑value logic.

setTimeout() in JavaScriptAn exploration of JavaScript's setTimeout function. Understand its nuances in component lifecycles, and learn effective timing strategies using it.

An exploration of the Zigzag Conversion problem: solve using string manipulation in web development, from iterative approaches to direct mathematical solutions.

Accessibility issues often creep in through ordinary front‑end habits. This article covers common mistakes and the fixes that make sites easier to use.

Sort arrays of objects in JavaScript with comparator functions, numeric and string properties, return values, case sensitivity, and deeper sorting notes.

There are essentially two different types of commenting in development languages: single‑line, and multi‑line. Here, we discuss these, and how to use them.

An article describing how to count function arguments in JavaScript. Use 'rest' parameters in ES6 or the 'arguments' object for older JavaScript environments.

splice()Discover how to master array modifications with JavaScript's Array.prototype.splice(), your all‑in‑one method for removing, adding, and replacing elements.

Swearing in the workplace is generally taboo, but not completely off‑limits. Use common sense, consider your audience, and remember that context is everything.

Reverse integers in JavaScript with sign handling, overflow checks, TypeScript examples, and the trade‑offs between string and maths approaches.