Dublin Library

The Publishing project

Is HTML Really Dead?

A recent article, HTML is dead, long live HTMLhttps://acko.net/blog/html-is-dead-long-live-html/, presents a provocative take on the state of HTML in modern web development. While it raises interesting points, I believe the conclusion misses the mark. Here's my perspective on why HTML, and the DOM, is not only alive but remains the essential, evolving foundation of the web. The DOM is Not Just a Document The Document Object Model DOMhttps://dom.spec.whatwg.org/ is the backbone of any webpage. It creates a structured, live representation of a document, allowing languages like javascript to dynamically alter its content, structure, and style. HTMLhttps://html.spec.whatwg.org/ is simply the standard...

Semantic HTML vs Tag Soup

The way you structure your content with HTML has a significant impact on your website's accessibility, search engine ranking, and overall maintainability. The key distinction lies in using semantic HTML versus what's pejoratively known as "tag soup" markup. Demystifying the Terminology Semantic HTML uses tags that clearly describe the meaning and structure of the content they enclose. Think of it as using labels that are self-explanatory. For example, the tag unambiguously indicates a section of navigation links, while defines a self-contained piece of content like a blog post or news story. These tags provide context to both the browser and...

Building a Reset

In a previous post A History of CSS Resetshttps://publishing-project.rivendellweb.net/a-history-of-css-resets/, we discussed the evolution of CSS resets and their importance in creating a consistent starting point for web development. In this post, we'll explore how to build a modern, opinionated CSS reset using Cascade Layers, a powerful feature that brings order and predictability to the often chaotic world of CSS. Why Create Your Own Reset? In modern web development, starting a project with a clean, predictable foundation is crucial. While pre-built systems like Open Props or Tailwind's Preflight offer excellent solutions, understanding how to craft your own modern CSS reset is...

Understanding PGlite

I've always loved the idea of running a database directly in the browser. Until I heard about PGLitehttps://pglite.dev/, I thought it was just a dream and that the only way to use PostgreSQL was to set up a server in the same box I was running the client code. But PGlite has changed that, allowing you to run a lightweight version of PostgreSQL entirely in the browser or in a JavaScript environment like Node.js. In this post we'll explore what PGlite is, when it's a good choice and when it's not and how to sync it with an external PostgreSQL...

What is a supply chain attack?

Supply chain attacks are a growing threat in the software development world, particularly with the rise of open-source package managers like NPM. These attacks exploit the trust developers place in third-party libraries and dependencies, leading to potentially devastating consequences. This post will break down the lifecycle of a software supply chain attack, explain how it works, and provide strategies to mitigate the risks. What is a Supply Chain Attack? A software supply chain attack occurs when a malicious actor infiltrates the software development process to inject malicious code into a legitimate application. With package managers like NPM, this often involves...

A History of CSS Resets

Ensuring a consistent look and feel across different browsers is a big challenge for web developers. One of the earliest and most persistent tools developed to tackle this issue is the CSS reset. This post explores what CSS resets are, why they were invented, and how their philosophy has evolved over the years. What is a CSS Reset and Why Was It Created? A CSS reset is a stylesheet that overrides the default, built-in styles of a web browser. They solve browser inconsistencies. In the early days of the web, browsers like Netscape Navigator and Internet Explorer had their own...

There is a limit to laziness

One of my favorite quotes about software development comes from Larry Wall, the creator of Perl: > We will encourage you to develop the three great virtues of a programmer: laziness, impatience, and hubris. > > —Larry Wall, Programming Perl 1st Edition As the book explains, Laziness is "the quality that makes you go to great effort to reduce overall energy expenditure. It makes you write labor-saving programs that other people will find useful and document what you wrote so you don't have to answer so many questions about it." I agree entirely. Productive laziness — the drive to build...

Rethinking Your CDN Strategy for 2025

The way we've done content caching using CDNs is changing, and it's not always intuitive. As a developer, you might have relied on the idea that using a popular CDN for libraries like jQuery would speed up your site because users already had the file cached. As we'll see, this is no longer the case. This post explain the old and new strategies for working with CDNs, how browser caching has changed, and what you should do to optimize your site in 2025 and beyond. Original CDN Caching In the old days browser caching was simple. The browser used a...

CSS if() function

When researching CSS features that mimic SASS features I came accross the if function. This function allows you to apply conditional logic directly in your CSS, similar to how you might use it in SASS. This post will cover Chromium's implementations of the if function, which is currently behind a flag, and how it can be used to create dynamic styles based on conditions, along with fallbacks for browsers that don't support it yet. At the time of this post, this feature is only available in Chromium-based browsers Chrome, Edge, and Opera behind the Experimental Web Platform features flag. The...

CSS Is Learning From SASS

In 2023, Chris Coyier wrote SASS features in CSShttps://chriscoyier.net/2023/07/11/sass-features-in-css/ where he explores the SASS features that have been adopted in CSS. It's been a couple years so, in this post, I will explore how have the features in Chris's article evolved and what additional features, originally in SASS, have been added to CSS. We'll also look at some of the SASS features that are still not in CSS. Some background SASS is a CSS preprocessor that extends the capabilities of CSS with features like variables, nesting, mixins, and more. It has been widely adopted in the web development community for...