
This is the first post in a series all about uploading files to the web. In this post, we cover the steps needed to upload files using only HTML.

Avoid duplicate-request & race-condition when creating JavaScript enhanced forms. Cancel previous fetch requests with AbortController.

Learn how to build backend APIs that support progressive enhancement by detecting if a request was submitted with HTML forms or JavaScript.

Learn how the CSS :has() pseudo-class can improve HTML forms through validation hints, conditional content, fancier designs, and more.

Learn how to make HTML images better for users with responsive sizes and modern formats without making your life as a developer much harder.

You may be familiar with using devtools to modify a website's HTML. In this blog post, I'll show you two more ways: contenteditable and designMode.

The HTML capture attribute is interesting because it allows you to activate a user's camera with just HTML. This article covers it in more depth.

Ignoring progressive enhancement could be seriously hurting your conversions. This article will show you how to build resilience into your apps.

A talk on using JavaScript to progressively enhance forms to improve user experience without negatively impacting native functionality.

This article explores the world of SVG favicons. We cover adding them to HTML, using emojis, inlining them as data URIs, supporting dark mode, and animations.