RSSAmplifier

Blog

Delicious Reverie

Benjamin Read's code garden.

deliciousreverie.co.ukRSS feed ↗163 posts

Latest posts

Working with Shopify in 2026

I've been building a complex integration with Shopify. It has been a journey.

Ends of Many Things

Seismic shifts in my life have meant this blog is becoming more about my personal interests. And I'm happy about that. I hope you will be along for the ride.

Hidden Histories

I've spent the last 2 years living and working around Welsh language speakers. I still find it amazing that a whole culture existed here without my ever encountering it before.

Build a countdown timer using Temporal with React

As the Temporal API is now stable, and a specification compatible polyfill is available, I thought I would use Temporal to build a countdown timer in a React project.

How to Cache and De-duplicate Fetch Requests

If you have an application which makes many requests to the same API you can use a key to cache and de-duplicate requests. Here's how to do it.

Lessons from refactoring a large dashboard application

Over the past few months I've been refactoring a large application. I learned a few things from doing it, and thought they might help someone else.

How We're using JavaScript with Drupal

For the past 3 years I've been working at a company that is heavily invested in Drupal as a platform. We've gone through a massive iteration with JavaScript and believe we've arrived at a solution that might help other teams.

Reading micro expressions

I find it fascinating that in spite of many advances in modern psychology certain myths and downright errors still persist. Micro expressions are one of these, and learning to notice them has helped me to understand people better.

Augmenting the details element

I've found the details element superbly useful lately. I added only one or two things to make this useful element suit two very different use cases

Dreamers, Builders and Cultivators

In a well established team, personality traits often come into play. Here we group three main types that, when recognised and supported, can help the business and the technology team to thrive.

First steps with the Temporal API

Dates in JavaScript are changing forever: The Temporal API is now at Stage 4, which means it's stable, and there's a polyfill available. It's time to start getting familiar with the API.

Sad songs say so much

I enjoy times when I'm gleefully happy. But I also enjoy being melancholy, which quite often comes out in my musical tastes. Here are some of my favourite melancholy songs, and why I like them.

Validate your commits with Git Hooks

With everything else we need to remember, checking formatting and linting is easy to forget. If this sounds like you, there are some great solutions out there. Here's how to use Git Hooks.

Building a media player with Web Components

This past year I've been involved in replatforming our media player to use media-chrome from Mux instead of JWPlayer. Here's how that went.

Waiting for an Element to appear in the DOM or shadow DOM with an Intersection Observer

An asynchronous solution which waits for elements to appear in the document. Covers both a normal Document and the Shadow DOM.

Building a Multitenant Kubernetes System

I recently decided to delve a little deeper into Kubernetes by building my own multitenant platform using Capsule.

Should I move from WordPress to code?

I'm getting asked this question a lot lately, so I made a few charts that I hope explains the choices people face when they are thinking about switching, and the effort that might take.

Start and end with the people

Professional software development at an enterprise scale is inherently, and at every level, social. How does comprehension of this fact help teams to perform better?

The WordPress 'Implosion'

Many years ago I moved away from building things with WordPress. But it's time I tried to help people understand what I think the current situation means for people still in the ecosystem.

Implementing a carousel with classes only.

Last year I built a carousel project and showcased it here. I've just updated the code I used so that you can implement a carousel by only adding the class name to the parent element. Here's a breakdown.

Better Type Safety with JSDoc

This is a follow-up article to one I wrote a few months ago, and which quickly became the most popular article on my blog. I've learned a few more tricks, including how to ensure that types in events are respected.

Observing Element Changes in the Shadow DOM

DOM content isn't always loaded in top-to-bottom. Custom elements sometimes need to wait for API calls, and sometimes you might instantiate some of the DOM elements via JavaScript. Here's a handy function to observe those changes

Using a moka pot on an induction hob

This is a trick that wasn't on any of the articles I found using the old search engines. So I'm posting it here. It's about how you can use an aluminium coffee moka pot on an induction hob.

Testing Web Components

I've been taking a deep dive into Web Components recently: building a complex application. I have really enjoyed it. However, as with any project I want to deliver something that is proven to work by means of static, unit and end-to-end tests. I've run in to some issues with existing test suites.

Comments are now live

A system to allow visitors to comment on my blog posts has just gone live.

Alliteration in Poetry

I've slowly begun to realise something about my taste in poetry, and I wonder how much this is because of my Welsh heritage. As a result, I'm diving more into traditional Welsh poetry, and really enjoying what I find.

How I'm doing

I very rarely write personal articles on this blog. But with the demise of social media I've decided to share a little more of my personal thoughts here.

Sending Emails via SendGrid with Cloudflare Functions

SendGrid remains a popular tool for routing emails in today's applications. But it isn't without pitfalls. Here's my setup.

Selecting parents of a nested element with the css :has selector

I was playing around with the :has selector recently and noticed it's got a pretty awesome feature: relative selectors.

Managing Quality across Different Codebases

Having a structured plan for the codebases in your project will help keep them in good shape. I've written this document as a guideline of sorts, feel free to adopt it, adapt it or use it as a basis your own.

Tracking video plays

The scope of this project was to track how much of a video has been watched periodically, send the data to an API at regular intervals. Here's how I achieved that in a developer-friendly way.

Tailwind progressively collapsing menu.

When I first saw this method of being able to progressively hide individual navigation items instead of all of them, and to do so without the use of JavaScript, I was impressed with the idea. Here's a remix using Tailwind.

Iterate.

A few times during the past year I've caught myself advocating for iterative changes. Both in software and in terms of our processes I've found that I far prefer smaller, incremental improvements over stressful, complicated and far-reaching changes that may or may not improve fulfilment, delivery and other metrics.

A Collection of Tailwind UI Loading States

I made a collection of loading states for Tailwind. It was relatively easy exercise, and I'm surprised I didn't find anything like it out there already.

2023 Site Rebuild

Sorry to those people who subscribe to my RSS feed, I had a bug which I couldn't fix before I re-launched deliciousreverie.co.uk, but which I've resolved now. Yes, I've rebuilt my site again. This is the fifth iteration. Here's why.

Deploying Nx monorepos to Netlify in 2023

Monorepos with Nx on Netlify has been my stack of choice over the past few years. I really enjoy using both tools to publish an ever-growing series of websites for my hobbies. But there have been a few changes to both Nx and Netlify in that time. This article updates one on the Netlify blog that's a little out of date.

Is JSDoc Better Than TypeScript? A Real World Example

I've become an avid fan of TypeScript in recent years as it's improved my output, tightened up my appreciation for JavaScript's type coercion, and generally reduced my anxiety levels at work. However recently I've come into a place of work where JavaScript is written and often maintained by software engineers for whom JavaScript isn't their speciality. Not wanting to go back to the wild west of…

Let's build a carousel!

Carousels are a staple of web development life. And thankfully, there are a lot of good off-the-shelf ones ready to build into your project. But it's a good challenge to see if you can build one yourself.

Publishing Poetry with Webiny CMS and Astro

I've wanted to have the ability on my blog to render poetry in a way that was conducive to reading, and I think I've finally managed to achieve that with my current tech stack, and some repurposing of tools I already use.

Fun with Callbacks

I had the opportunity to integrate a callback function with a module I was building recently. But what is a callback? How do you use them? Let's take a closer look.

Polymorphic Elements in Astro

I'm building a component library in Astro, and one of the things I needed to do was to build a component that could render as either a button or an anchor tag. Here's how I achieved that.

Poems about Time

Time is a funny thing. Whilst modern science has helped us to see it's not as constant as we might have imagined, we still rarely are able to see it and our experiences within it from different perspectives. Although I really enjoy these few poems that seem to be able to step outside of the flow in one way or another.

A congratulatory message with hidden meaning

I'm particularly proud of this piece of artwork and messaging I came up with for the Webiny community, not only because of the message it conveys to our community, but also because it also has a hidden message.

2022 Website Rebuild

I've just relaunched my website with an entirely new stack, here's what it consists of and why I've made these technical decisions.

Reset Webiny State Without Redeploying

This post was written for Webiny's technical documentation portal. Learn how to roll back the data in your Webiny project by restoring from DynamoDB backups and Elastic Search / OpenSearch snapshots.

Testing Packages Locally Using Lerna & Verdaccio

Originally published on the Webiny blog. We want to provide the easiest way for developers to get started when building a new Webiny project. So we have a create-webiny-project command line interface (CLI) that creates a new user project with their chosen AWS region and some other preferences they need.

Introducing Webiny Enterprise CMS+

Originally published for the Webiny community and Product Hunt launch. It introduces a new marketing term that was conjured up to provoke discussions about what value Webiny brings to organizations apart from the CMS aspect, and because of it's serverless nature.

Should I Use Gatsby or Next.js For My Next Project?

Originally written for the Webiny blog and was written at a time when Gatsby was experiencing a bit of a resurgence. By writing it, I was hoping to tap into this renewed interest and provide value by highlighting the differences and advantages to each tool.

20MinJS: Serverless JavaScript: What, Where and Why

I appeared on the podcast 20 Min JS with Fernando Doglio to talk about Serverless as a concept, and how developers can maximize their time and ship deliverables faster by adopting serverless.

Alternatives to Heroku’s Free Tier

Originally written for the Webiny blog. Heroku announced that it's extremely popular free tier plans were being phased out and I saw an opportunity to provide some high value content that could capture the audience and attract them to Webiny as a product.