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
![Using Nodemon and Watch in Node.js for Live Restarts](jpg/1702271439nodemon-300x180.jpg)
Learn how to use nodemon and Node.js watch mode to auto restart your Node.js app and thereby speed up your development workflow.
![How to use the File System in Node.js](jpg/1701155576node-js-file-system-300x170.jpg)
Learn the basics of the Node.js file system module, which provides an API for writing files to the macOS, Windows and Linux file systems.
![How to Use Node.js with Docker](jpg/1700022858docker-nodejs-300x170.jpg)
Learn about the benefits of running Node.js applications in Docker containers and how to create a practical development workflow.
![How to use the Fetch API in Node.js, Deno, and Bun](jpg/1698889762fetch-api-300x190.jpg)
Learn how to use the Fetch API — a simpler, easier, promise-based alternative to XMLHttpRequest — with Node.js, Deno and Bun.
![An Introduction to the Bun JavaScript Runtime](jpg/1683680180bunjs-300x170.jpg)
Learn about Bun 1.0, a rival JavaScript runtime to Node.js and Deno, and the reasons it may tempt you away from your current favorite.
![10 of the Best Programming Fonts](jpg/1695018352best-programming-fonts-300x170.jpg)
We review a bunch of the best programming fonts available for free download and for purchase, and how to choose the best one for you.
![An Introduction to the esbuild Bundler](jpg/1691379511esbuild-introduction-300x170.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.
![How to Apply CSS3 Transforms to Background Images](png/1578355340background-rotate-300x157.png)
Craig Buckler demonstrates a neat trick for applying CSS3 transforms to background images. Rotating and skewing elements with stunning backgrounds will now be a breeze!
![How to Create Printer-friendly Pages with CSS](jpg/1695195111css-print-styles-300x170.jpg)
Craig Buckler reviews the art of creating printer-friendly web pages with CSS, showing how to retrofit them to any site, at minimal cost, without affecting or breaking existing functionality — delighting users and raising your site above competitor sites.
![An Introduction to Native CSS Nesting](jpg/1688602136css-nesting-300x170.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-300x170.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.
![What’s New in Node.js 20](jpg/1682298470node-js-version-20-features-300x170.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-300x170.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-300x170.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-300x170.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-300x170.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-300x170.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-300x170.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-300x170.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-300x170.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-300x170.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-300x160.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-300x150.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-300x170.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-300x170.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-300x170.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-300x170.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-300x170.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-300x170.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-300x170.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.