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
![An Introduction to the esbuild Bundler](jpg/1691379511esbuild-introduction.jpg)
Learn how to use the esbuild bundler to optimize your JavaScript, TypeScript, JSX, and CSS code, and how to create your own build system.
![An Introduction to Native CSS Nesting](jpg/1688602136css-nesting.jpg)
Now that CSS nesting has started to land in browsers, learn how you can use it to write more efficient CSS without using a preprocessor.
![An Introduction to the View Transitions API](jpg/1687919455view-transitions-api.jpg)
Learn how to use the new View Transitions API, which offers an easier way to animate between DOM states and even between page loads.
![An Introduction to the Bun JavaScript Runtime](jpg/1683680180bunjs.jpg)
Learn about Bun, a rival JavaScript runtime contender to Node.js and Deno, and the reasons it may tempt you away from your current favorite.
![What’s New in Node.js 20](jpg/1682298470node-js-version-20-features.jpg)
Node.js 20 was released in April 2023. Learn about the new options available to developers with the world's most-used JavaScript runtime.
![10 Ways to Hide Elements in CSS](jpg/1582635109hide-with-css.jpg)
Learn the various CSS methods available for hiding elements on a web page, looking at how they differ and which is best when.
![What’s New in Eleventy 2: A Great SSG Just Got Better](jpg/1679357466eleventy-2.jpg)
Get up to speed with Eleventy 2.0, a popular, highly configurable SSG that's packed with new features to make web development even easier.
![The Ultimate Guide to JavaScript Error Handling](jpg/1674711853javascript-error-handling.jpg)
Dive into this comprehensive guide to JavaScript error handling, where you'll learn how to throw, detect, and handle your own errors.
![Flow Control in JavaScript: Callbacks, Promises, async/await](jpg/1674519706javascript-flow-control.jpg)
Learn about key problems related to asynchronous programming in JavaScript and how to make your life easier with promises and async/await.
![How to Install PHP on Windows 10 and 11 (with Apache & MySQL)](png/1617674132install-php.png)
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).
![Sophisticated Web Scraping with Bright Data](jpg/1670983617bright-data-web-scraping.jpg)
Web scraping is a developer superpower, but it's getting harder. Bright Data makes scraping easier, reliable, and practical.
![The Ultimate Guide to Web Workers](jpg/1669795387web-workers.jpg)
Learn why long-running functions in JavaScript are problematic, and how to use web workers to address execution speed issues.
![Windows Subsystem for Linux 2: The Complete Guide for Windows 10 & 11](jpg/1661843904wsl2.jpg)
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).
![What Is a REST API?](jpg/1661396237rest-api.jpg)
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.
![How the CSS :is, :where and :has Pseudo-class Selectors Work](jpg/1660647540is-where-has-pseudo-class-selectors.jpg)
The new CSS :is(), :where() and :has() pseudo-class selectors are exciting additions to CSS. Learn how easy they are to use!
![Useful Built-in Node.js APIs](png/1654047218useful-node-apis.png)
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.
![The Best Website Builder Tools & Platforms for Your Idea](png/1620180573website-tools.png)
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.
![An Introduction to PostCSS](jpg/1635738723postcss1.jpg)
CSS preprocessors are popular, but they have some drawbacks. Learn the advantages of PostCSS and what its extensive range of plugins can do.
![12 Essential Atom Packages for Web Development](jpg/1634091301atom-packages.jpg)
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.
![7 of the Best Code Playgrounds & CodePen Alternatives](jpg/1630484762code-playgrounds.jpg)
Code playgrounds make it easy to experiment, share code, and show off your skills! Learn about seven of the best front-end code playgrounds.
![Teaching as a Side Hustle for Engineers](jpg/1630463978teaching-programming9.jpg)
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.
![Truthy and Falsy Values: When All is Not Equal in JavaScript](jpg/1629186546truthy-falsy-javascript.jpg)
Anything in JavaScript can be considered truthy or falsy. Learn what these values are and the rules that apply when they're compared.
![The Complete Guide to HTML Forms and Constraint Validation](jpg/1628603246fom-constraint-validation.jpg)
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.
![An Introduction to Frameworkless Web Components](png/1626661677frameworkless-web-components.png)
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.
![How to Store Unlimited* Data in the Browser with IndexedDB](png/1623115048browser-storage.png)
Client-side storage has a lot of practical use cases. Learn the fundamentals of storing data in the browser using the IndexedDB API.
![How to Deploy Your Jamstack Site to Cloudflare Pages](png/1621993721jamstack-cloudflare.png)
There's a growing list of options for hosting Jamstack sites. Find out what Cloudflare Pages offers and how it compares to the competition.
![10 Client-side Storage Options and When to Use Them](png/1621499954browser-storage.png)
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.
![How to Make Your Site Faster with the Performance API](png/1620816379performance-api.png)
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.
![7 Reasons NOT to Use a Static Site Generator](jpg/1620094934ssg3_result_1200.jpg)
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.
![Queue Data Structures: How to Build a Node Task Queue](jpg/1622834212queue.jpg)
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.