I Survived 2025

I have survived another year of self-employment! Business has changed over that time. Gone are the days I can freely share a neat case study online. Clients demand confidentiality. I front-end develop and I refuse to prompt and everything else is a secret! Can I survive next year … | Continue reading


@dbushell.com | 7 months ago

Wrapping up Advent of Code 2025

I wrote about Advent of Code in January and I was keen to return for AoC 2025 . This year I upped my game by attempting all puzzles in JavaScript, Zig, and Rust. I had plenty of time due to a work project falling through… Oh well, time to brute force some puzzles! […] | Continue reading


@dbushell.com | 7 months ago

Deleting Code for Performance

My website is built with a home-cooked static site generator (don’t look, it’s a mess). I wrote a half-baked markdown parser I haven’t touched in a year. Until now! It’s time to under-engineer Hmmarkdown! De-sync I coded my markdown parser to be “optimistically async”. […] | Continue reading


@dbushell.com | 7 months ago

iOS Web Browser Latency

Apple’s anti-competitive practices are well documented. This has allowed Apple to maintain a paltry mobile web experience with minimal effort. iOS Safari is a pathetic offering. Regardless, I’ve never bothered until recently with other iOS web browsers because they’re all Safari … | Continue reading


@dbushell.com | 7 months ago

Async SvelteKit Data and Side Effects

Svelte(Kit) keeps pulling me back in! The remote function stuff is looking tasty. Wish I had that for my client work last year. I’ve got a personal project I’m tempted to refactor but I’ll wait for the API to stabilise. In the meantime, I’m playing with a small SvelteKit app to r … | Continue reading


@dbushell.com | 7 months ago

Croissant Update and Dexie

Croissant v0.5 has been released! I have improved the favicon fetcher from the last update. Croissant will now go HTML spelunking because not enough blogs have a default favicon.ico. I have added a “Close as Unread” button to the end of the reader view. […] | Continue reading


@dbushell.com | 8 months ago

Vivaldi, Yea or Nay?

I just read an opinion piece on a tech company blog. I have a general rule not to do that. Corpo blogs are biased, thinly veiled ads that are too quick to jump the gun with: “And that’s why we built [crapware]”, without justification. I gave this blog a chance because the author … | Continue reading


@dbushell.com | 8 months ago

Reimagine the Date Picker

Wayyyyy back in 2012 I created the best date picker in the world! Pikaday on GitHub revels in 8k braggadocious stars but this year we decided to archive the project. Pikaday was old and tired. Personally I had successfully ignored it for years. […] | Continue reading


@dbushell.com | 8 months ago

Intent to Deprecate and Remove Google Chrome

Summary Chrome v1.0, which all Google users adhere to, was standardized in 2008. In the meantime, alternate browsers have evolved, adding privacy features, and growing apart from the old data sharing model frozen into Chrome. This lack of advancement, coupled with the rise of pri … | Continue reading


@dbushell.com | 8 months ago

Better Alt Text

It’s been a rare week where I was able to (mostly) ignore client comms and do whatever I wanted! That means perusing my “todo” list, scoffing at past me for believing I’d ever do half of it, and plucking out a gem. One of those gems was a link to “Developing an alt text button fo … | Continue reading


@dbushell.com | 8 months ago

Custom Cursor Accessibility

For the unaware, macOS has settings or preferences or whatever it’s renamed tomorrow. Buried deep within this UI labyrinth are pointer settings. Windows has similar hidden behind Candy Crush bloatware and Copilot slopware. Personally, I find the default “normal” cursor ludicrousl … | Continue reading


@dbushell.com | 8 months ago

Is it Time to Regulate React?

Regulate?! Sounds like rage bait. I’ll try not to disappoint. It’s right to balk at the idea of government intervention in your sacred tech stack. Legislation from tech-ignorant bloviates? The last resort for an industry that fails to self-regulate. But I dare say React is tempti … | Continue reading


@dbushell.com | 9 months ago

Croissant Favicons and Tauri Troubles

Croissant v0.4 is out! I fixed a few minor bugs and added favicons. Feature Requests I’ve had a surprising amount of feedback. I wasn’t expecting anyone to care about an app I designed for myself. Thanks to all who managed to navigate my contact form. […] | Continue reading


@dbushell.com | 9 months ago

RSS Club #004: Ghost of Autumn

The summer solstice has long past which means it’s Christmas soon if the local supermarkets are to be believed. I refuse to eat a mince pie before November at the earliest. Daylight savings time will come to an end (impossible to know exactly when). […] | Continue reading


@dbushell.com | 9 months ago

What is a Linux?

Do you build websites like me? Maybe you’re an Apple user, by fandom, or the fact that macOS is not Windows. You’ve probably heard about this Linux thing. But what is it? In this post I try to explain what is a Linux and how Linux does what it be. […] | Continue reading


@dbushell.com | 9 months ago

Email: The Final Form

I’m taking one last stab at my contact form before it’s binned forever. Back in May I came up with a “progressive dehancement” technique to validate form submissions. For non-JavaScript ‘users’ I took the drastic measure of blocking all @gmail and @outlook addresses. […] | Continue reading


@dbushell.com | 9 months ago

Not My Cup of Tea

As blog topics go, last week’s Next.js clownshow was a freebie. A bit of front-end dev and a middle finger to fascism. I had it drafted before my tea went cold. I wasn’t expecting round two to hit harder. This week I momentarily lost the will to blog. Ok, I’m being very dramatic. … | Continue reading


@dbushell.com | 9 months ago

RSS Club #003: Silksong

This is an “RSS-only” post where I discuss topics tangentially related to my usual web design and development feed. Ignore or enjoy! Before I delve into the dark corners of Pharloom I’d like to discuss one related topic. Difficulty and Accessibility Silksong is a hard game that o … | Continue reading


@dbushell.com | 9 months ago

How Much Does Freedom Cost?

Trump’s National Design Studio has an executive order to “modernize the interfaces that serve everyday citizens”. That means rich/white people (but not the ‘disabled’ kind). The US government had digital service agencies that cared about a performant and accessible web until they … | Continue reading


@dbushell.com | 10 months ago

Let’s see Paul Allen’s CSS Reset

CSS “resets” are boilerplate code designed to remove or normalize browser defaults. They provide solid foundation to build bespoke CSS upon. When utilised correctly they should be unobtrusive. Any quirks being ones of personal taste and flair. […] | Continue reading


@dbushell.com | 10 months ago

I Shut The Emails Out

Last week I let the emails in by self-hosting an unencrypted SMTP server on port 25. That was a “fun” challenge but left me feeling exposed. I could host elsewhere but most reputable hosting providers block SMTP ports. I found another answer. Cloudflare I know. Bleh! Sellout to B … | Continue reading


@dbushell.com | 10 months ago

Trillion Dollar Elephants

I was hesitant to post this because the WHATWG & friends war party is strong on the defence! I’d ask for parley but this is going to get spicy so I won’t feign friendship. I want my web career to survive. I want the web to be better. I want to address the trillion dollar elephant … | Continue reading


@dbushell.com | 10 months ago

I Let The Emails In

They say never operate your own email server. It’s all fine and dandy until Google et al. arbitrarily ban your IP address. Doesn’t matter if you configure DMARC, DKIM, and SPF — straight to jail. But that only applies to sending email. I think. I’m testing that theory. […] | Continue reading


@dbushell.com | 10 months ago

Croissant RSS Beta is Live!

and it has been for a couple of weeks. I’m bad at launching stuff but the important thing is that Croissant is live! I’ll tell you what you need to know. After this screenshot. Maybe try reading this post in Croissant! What is Croissant? Croissant is an RSS reader I designed for … | Continue reading


@dbushell.com | 10 months ago

Self-hosted Forgejo Releases (the Final Boss)

So I made a thing and then I blogged a whole thing about updating the thing via GitHub releases. Then GitHub went too far and I scarpered to a self-hosted Forgejo instance. I got web deployment actions working but I saved the release action for another day. The Day That day is to … | Continue reading


@dbushell.com | 10 months ago

RSS Club #002: Dino Edition

As the VC-funded web continues to ensloppify, it’s important to remember that we don’t need to play their games. Despite billion dollar efforts the web remains decentralised. We can hyperlink right past the wannabe gatekeepers. Like this hyperlink to the Animal Photo Reference Re … | Continue reading


@dbushell.com | 11 months ago

Self-hosted Forgejo Actions Runner

Did I mention GitHub is dead to me? I’m moving my code to a self-hosted Forgejo instance at git.dbushell.com. Today I added Actions. Forgejo Actions are a thing like GitHub Actions for “continuous integration”. Love a bit of CI! Forgejo Actions don’t work out of the box. […] | Continue reading


@dbushell.com | 11 months ago

GitHub Ensloppification

The GitHub API says my account was created 2011-08-23 which is what, 14 years ago? Not bad for a free (gratis) ride. I never paid GitHub a penny but I did once rinse 99% of a quota. In that time I’ve amassed 10k stars which I’m now looking to cash in… is there like, a gift shop, … | Continue reading


@dbushell.com | 11 months ago

RSS Club #001

Welcome to RSS Club! The first rule of RSS Club is: you tell everyone about RSS Club. RSS is the best way to follow weblogs. I’ve used NetNewsWire for years and I’m now building Croissant RSS to control my own reading experience. Croissant will be available in September as kind o … | Continue reading


@dbushell.com | 11 months ago

Composable Adopted Stylesheets

In my Anatomy of a Web Component I stopped short of shadow DOM and styles. In this post I’ll share how I’ve tackled that problem with adopted stylesheets. You don’t need a “styled components” framework or hundreds of utility classes. CSS has everything you need! […] | Continue reading


@dbushell.com | 11 months ago

Anatomy of a Web Component

Custom elements are the backbone of a “web component” if that’s your preferred term. Web components typically includes the additional baggage of being “composable UI” as found in JavaScript frameworks (whatever that means). In this post I’ll dissect the basics of a custom element … | Continue reading


@dbushell.com | 11 months ago

“Don’t Get Left Behind”

The Web Yesterday The Web Today The Web Tomorrow | Continue reading


@dbushell.com | 11 months ago

Play it, Sam. Play “Speech Synthesis”

Terence Eden’s Numbers Station is a fun experiment using the Web Speech API to synthesise text-to-speech (TTS). Modern web browsers have TTS built-in. Learning of this powerful API gave me an idea. I’m a big podcast and audiobook listener. I appreciate when blogs provide an alter … | Continue reading


@dbushell.com | 12 months ago

Croissant is Coming for You

Last week I documented Croissant development in a lengthy tome that should have been a series. I’m also writing a series of dev notes. I suppose the main blog is a series now because this is part two. My gift of a Googly eyes CodePen was a success. I have no gift this week. […] | Continue reading


@dbushell.com | 1 year ago

Croissant! Building a No-Framework Web App

If you subscribe to my notes you’ll know I’ve gone a little crazy building an RSS aggregator web app over the past week. My side project code-named Croissant has been a delightful challenge. Working with web standards is wonderful! I planned nothing which is why I went on a side … | Continue reading


@dbushell.com | 1 year ago

SVG Optimization and Accessibility Basics

SVG (Scalable Vector Graphics) are now commonplace on the web. When I wrote Resolution Independence With SVG for Smashing Magazine in 2012 many of the comments related to browser support and bugs. Back then we didn’t have Baseliness for peace of mind. SVG adoption was a slow burn … | Continue reading


@dbushell.com | 1 year ago

JSR & Deno One Year Later - Malware?!

I’ve been rather mean to Deno lately. I wasn’t kind in my review of Deno & JSR last year either. I think it’s only fair that I see if my criticisms were addressed. Despite my misgivings I still use the Deno runtime itself. I previously wrote about Deno’s homepage redesign which w … | Continue reading


@dbushell.com | 1 year ago

Ditching Deno KV

Way back in 2021 I began the adventure of building my own media server for audiobooks and podcasts with a PWA front-end. This side project has taking me on a tech rollercoaster. The only waste of time has been Deno KV and one episode of the All-In podcast I suffered through despe … | Continue reading


@dbushell.com | 1 year ago

You Can’t Pay Me To Prompt!

Did you noticed the new badge stamped atop my website? This reflects my current stance on “AI” use for my professional work. TL;DR: I don’t use AI. If that surprises you, either you’re new here (welcome), or you skipped my ranting and raving in recent weeks. […] | Continue reading


@dbushell.com | 1 year ago

Your Framework is Showing 😳

⚠️ Warning: this post criticises the React and Next.js frameworks. Cultists with a weak disposition may struggle to disassociate themselves and feel personally attacked. Take a deep breath, remember that React is a tool and not a lifestyle choice, you’ll be ok :) Imagine you’re b … | Continue reading


@dbushell.com | 1 year ago

Weighing Souls with Anubis at Home

Look what I made! I’ve been Javascripting again. My new project Anoobis is an experimental implementation of Anubis I made with JavaScript, Zig, and Wasm. But what is Anubis? “Weigh the soul of incoming HTTP requests using proof-of-work to stop AI crawlers”Anubis is a PoW (proof … | Continue reading


@dbushell.com | 1 year ago

aseless

Baseline is a popular Google product that claims to: “brings clarity to information about browser support for web platform features”A noble and valiant cause. Unfortunately, poor Google are strapped for cash and can’t afford to pay developers. Desperate times calls for desperate … | Continue reading


@dbushell.com | 1 year ago

Ensloppification

I’ve been reading “Advising Reasonable AI Criticism” by Declan Chidlow. From my perspective as a self-professed AI Luddite the far too reasonable points made by Chidlow don’t fit my anti-AI narrative. I’ve been forced to think and reflect. Which I don’t like doing this far into t … | Continue reading


@dbushell.com | 1 year ago

::pseudo-elements?

I’ve given it some thought and I’m going to say it. I don’t like pseudo-elements. At least not where they’re going. Talk of Google’s carousel kerfuffle was rightly focused on accessibility (or lack thereof). However, the spec behind the carousel makes ample use of new pseudo-elem … | Continue reading


@dbushell.com | 1 year ago

Search with Zig, Wasm, and a Worker ⚡

Static search was a nice upgrade to my blog. Pagefind is super easy to use. Point it at and it’ll crawl your website making it searchable with a bit of front-end magic. A minor issue I had with Pagefind was file churn. Every re-index resulted in 200+ deletions and 200+ additions. … | Continue reading


@dbushell.com | 1 year ago

Slopaganda

The internet is ruined. Ruined I tell you! It was ruined when you chose proprietary messengers over open protocols. It was ruined when you let Google search and Chrome become gatekeeper to the web whilst they sold your privacy as a service. It was ruined when brands engaged and y … | Continue reading


@dbushell.com | 1 year ago

The Static Site Churns!

I often refer to my scuffed static site generator but what is it? It’s a hodgepodge of scripts honed over years, or pilfered from GitHub last week, that glue together my website. As of this weekend it now includes Hono too. Yeah, I refactored again 😔 The self-inflicted Ja … | Continue reading


@dbushell.com | 1 year ago

Glossary Web Component

I’ve added a secret glossary to my blog! You might find it by hovering over special links. Don’t tell anyone, it’s a secret. At least until I can find a way to style the links without them being a distraction. Do I need to, or can they remain easter eggs? […] | Continue reading


@dbushell.com | 1 year ago