Craig is a freelance UK web consultant who built his first page for IE2.0 in 1995. Since that time he's been advocating standards, accessibility, and best-practice HTML5 techniques. He's created enterprise specifications, websites and online applications for companies and organisations including the UK Parliament, the European Parliament, the Department of Energy & Climate Change, Microsoft, and more. He's written more than 1,000 articles for SitePoint and you can find him @craigbuckler.
Craig's articles

Dive into this comprehensive guide to JavaScript error handling, where you'll learn how to throw, detect, and handle your own errors.

Learn about key problems related to asynchronous programming in JavaScript and how to make your life easier with promises and async/await.

Looking for tips on how to install PHP on Windows? We walk through how to install PHP 8.2 and Apache 2.4 on Windows 10 or 11 (64-bit).

Web scraping is a developer superpower, but it's getting harder. Bright Data makes scraping easier, reliable, and practical.

Learn why long-running functions in JavaScript are problematic, and how to use web workers to address execution speed issues.

Learn how to install, set up, manage, and use a full Linux environment on Windows 10 & 11 PCs with Windows Subsystem for Linux 2 (WSL2).

The REST API is a key part of web infrastructure. Learn about REST and REST APIs, and how web apps communicate over HTTP like web browsers and servers do.

The new CSS :is(), :where() and :has() pseudo-class selectors are exciting additions to CSS. Learn how easy they are to use!

Learn about the most used and useful APIs built in to the standard Node.js runtime to save you time and improve your app's efficiency.

You want to start an online business… but where do you start? Learn about the best website builder tools and platforms for common use cases.

CSS preprocessors are popular, but they have some drawbacks. Learn the advantages of PostCSS and what its extensive range of plugins can do.

Atom has a wealth of packages that keep it up there with the best code editors. Learn about 12 of the best Atom packages for web developers.

Code playgrounds make it easy to experiment, share code, and show off your skills! Learn about seven of the best front-end code playgrounds.

As a developer, you have a lot of knowledge to offer others. Learn ways to share your skills, boost your status, and make some extra money.

Anything in JavaScript can be considered truthy or falsy. Learn what these values are and the rules that apply when they're compared.

How much do you know about HTML5 form validation? Even if you know a lot, we bet you'll learn things you didn't know in this handy guide.

Learn what web components are and how to use them without a JS framework. This article shows you an approach that relies on custom elements.

Client-side storage has a lot of practical use cases. Learn the fundamentals of storing data in the browser using the IndexedDB API.

There's a growing list of options for hosting Jamstack sites. Find out what Cloudflare Pages offers and how it compares to the competition.

Sometimes you want to store data in the browser and not send it to a server. Learn 10 ways to do so, their pros, cons, limits, and use cases.

The Performance API offers a way to measure website and app speed. Learn how to use it on actual devices used by real people in different locations.

Static sites can have benefits, but they aren't right for every project! Learn seven reasons why an SSG might not be the best choice for your next project.

Queues prevent bottlenecks by managing how long-running tasks are executed. Learn how to use them in your apps by building a Node task queue.

Is a CMS overkill for your next app? Could a static site generator improve performance, management and security? Learn about the benefits of using an SSG.

ngrok is a free service that helps you share a site or server running on your local machine. This tutorial shows you how to use it.

MySQL 5.7+ InnoDB databases and PostgreSQL 9.2+ support JSON document types in a single field. We explore the MySQL 8.0 JSON implementation in more detail.

Does your web app work in all devices? Testing is a huge job. Learn how to enable Chrome's useful device mode to emulate dozens of mobile devices.

Need to translate your website? Learn how to use the JavaScript Internationalization API (I18n) and how easy it is to implement it in your apps.

There are several ways to define a block of JavaScript functionality. Learn which is the most appropriate one for your particular use case.

Sprites are popular for bundling graphics into a single file. And they can even be made with SVGs! Learn how SVG sprites work and why they're so awesome.