Progressive Dehancement

I’ve ummed and ahhed over removing my contact form entirely. Quality enquiries are rare but still worth the risk of spam. I’d like to hold out a little longer. At least until “AI” apologists ruin the web (don’t pretend you’re not!) Until that day, I’m open for contact. […] | Continue reading


@dbushell.com | 1 year ago

Deno’s Decline (6 Regions and Falling)

The future of Deno Land Inc. is not looking bright. Their commercial product Deno Deploy claims to be “edge” hosting with “massive global scale”. “JavaScript applications on Deno Deploy run server-side logic geographically close to users, offering low latency and great performanc … | Continue reading


@dbushell.com | 1 year ago

Bunny CDN 🐇 (Migrating from Cloudflare)

Bunny provide CDN services, edge storage, DNS, JavaScript; you know, the usual suspects. More importantly, Bunny are what’s become known as a European alternative. Something that non-US web folk are starting to pay more attention to. I moved from Netlify to Cloudflare back in 202 … | Continue reading


@dbushell.com | 1 year ago

Zig Smart Lights; Zapping the Snake ⚡

I talked about replacing Home Assistant and I’ve only gone and done it! Home Assistant powered the back-end infrastructure for my macOS/web app light switch. I’ve replaced it with a tiny custom built Zig service. I discuss my Zig learnings below. […] | Continue reading


@dbushell.com | 1 year ago

Spring 2025: Self-Hosted Update

My last self-hosted updated was Summer 2024, what’s new? The Mini-ITX Proxmox server I built has been rock-solid. No downtime, no hardware hiccups, though I never bothered to use graphics PCI passthrough. My Raspberry Pi 5 is unplugged 😔 just no use for it. […] | Continue reading


@dbushell.com | 1 year ago

Ghostty & macOS Quick Terminal 👻

I was a serial terminal hopper until I switched to Ghostty for the cool name and I stayed for the cool features. Founder, developer, and fellow Zig fan Mitchell Hashimoto discussed Ghostty on the PodRocket podcast. There I learnt of a hidden macOS feature; the Quick Terminal. […] | Continue reading


@dbushell.com | 1 year ago

Weblogging (tagged)

I did a three part series on blogging but Jim just tagged me so… I guess the threequal becomes a quadrilogy? Why did you start blogging in the first place? I was new to the web scene, fresh out of college† and starting a new job in London. I’ll blame my boss Iain Scott who loved … | Continue reading


@dbushell.com | 1 year ago

Et tu, Grammarly?

For a few months now I’ve received sporadic reports that my website was broken. They said the layout was askew and things were sized strangely. They had screenshots to prove it. This was embarrassing for a professional website builder. Thankfully my audience is tech-savvy and the … | Continue reading


@dbushell.com | 1 year ago

Vibe-free SvelteKit for Fun and Profit

I’ve been on a bit of a journey ever since I shamed myself into rolling my own accounting software, henceforth The App. To buck a trend, I’m coding The App vibe-free without “AI” because I’m an adult capable of writing my own technical debt thank you very much. […] | Continue reading


@dbushell.com | 1 year ago

A Focused Redesign

It’s time to lock-in! You might have noticed a change with my blog posts (take a look if you’re in an RSS reader). If you’re on a phone there isn’t much of a difference to see. I love my design so this is more of a realign than a redesign. I know what you’re thinking, a single ce … | Continue reading


@dbushell.com | 1 year ago

Zig App Release and Updates via Github

I built a small app with Zig and I’m using it across my fleet of homelab devices and VMs. I’m testing Zigbar “in production”, or dogfooding as they say. What’s become apparent is that getting new changes to a dozen machines is tricky. Until now I was copying files over SSH: Copy … | Continue reading


@dbushell.com | 1 year ago

I built a ZSH Prompt with Zig ⚡

I built a prompt! Not the “AI” kind. I’m talking about this thing: I customised the part of the terminal shell that asks for user input. I used Zig to write my own dev-focused prompt. Why I’m currently on Ghostty terminal with ZSH. I’ve also used Starship prompt for years but nev … | Continue reading


@dbushell.com | 1 year ago

“Never have, never will”

Last year I struggled to choose a browser after declaring Firefox dead. I was accused of being a tad dramatic, which held truth, but if anyone was following Mozilla’s actions they’d have seen what we all saw this week. Mozilla execs have been floundering for a long time. […] | Continue reading


@dbushell.com | 1 year ago

Copy Code Button

I’ve added a new feature on my blog following the advice and example from Salma Alam-Naylor: “How to build a copy code snippet button and why it matters” “It is impossible to highlight and copy code blocks when you are unable to use your hands. […] | Continue reading


@dbushell.com | 1 year ago

Framework-mania is running wild!

This is a public service announcement because the JavaScript world has lost its collective mind! Frameworks are everywhere. Where did the libraries go? Background Skip below for the main course if you don’t care but I’m building a CRUD-heavy web app for my personal finances. […] | Continue reading


@dbushell.com | 1 year ago

The Patient Programmer

There was a time before t’internet when new episodes for Friends were delivered on a weekly schedule. If memory serves that was Friday night, Channel 4 in the UK. Fast-forward a generation and Netflix invents cold dropping all episodes on demand. […] | Continue reading


@dbushell.com | 1 year ago

Zig: The Good Parts (1)

Learning Zig as a front-end developer involves plenty of unlearning. JavaScript is lenient and even TypeScript allows for mischief. With Zig, and basically everything that isn’t JavaScript, the rules of engagement are strict. Zig is a low-level compiled programming language. […] | Continue reading


@dbushell.com | 1 year ago

Advent of Code

Advent of Code is an annual advent calendar full of fun festive themed programming puzzles. Over my winter break I had a great time solving all puzzles for AoC 2024. This was my first year participating in AoC. It was such a fun experience I’ve gone back to previous events and st … | Continue reading


@dbushell.com | 1 year ago

Weblogging: Part 3

This is the third and final post in my three part series on blogging. It was due last year but I got a little busy! Part 1: Why Blog Part 2: In Numbers Part 3: For Humans Part 3: For Humans I don’t blog for robots. I find it quite alarming how many people do. I write for humans. … | Continue reading


@dbushell.com | 1 year ago

Weblogging: Part 2

This is the second post in my three part series on blogging. They don’t need to be read in order, but I’d be happy if you read them! Part 1: Why Blog Part 2: In Numbers Part 3: For Humans (coming soon) Part 2: In Numbers My website today is a dozen pages and approaching 400 blog … | Continue reading


@dbushell.com | 1 year ago

Weblogging: Part 1

Isn’t “Weblog” such a fun word? Not we-blog, web-log. Although we-bloggin’ sounds fun too. Why did it ever get shortened to blog? Anyway, this is gibberish, I’m here to discuss writing on the web, aka blogging. This is part one of a three part series: Part 1: Why Blog Part 2: In … | Continue reading


@dbushell.com | 1 year ago

Cool People Link to Text Fragments

Hyperlinks are cool. They’re what make the web, The Web. You know what’s really cool? Linking to specific sections of a web page. We’ve done that forever with the URL hash/fragment linking to an element with an id attribute. Now there is a more powerful way! […] | Continue reading


@dbushell.com | 1 year ago

Links Initiative

I suggested the idea of a “links initiative” as a way to kick-start the more daunting task of building a front-end resource directory. Basically just blog your favourite dev related links and maybe they can be collated to bootstrap a directory. […] | Continue reading


@dbushell.com | 1 year ago

Static Search with Pagefind

My website has been static since — checks new search index — at least July 2014! I’ve gone through so many static site generators and custom build scripts I’ve lost track. In that time I’ve amassed quite a big blog. Finding old articles has become harder than it should be. I need … | Continue reading


@dbushell.com | 1 year ago

Generate Open Graph Images with Playwright

My social media posts have been boring on the visuals. Not anymore! I now auto-generate a nice typographic preview. Scroll down to see an example. This is what shared links to my website looked like before: I love my origami crane mascot but three copies is a little excessive! [… … | Continue reading


@dbushell.com | 1 year ago

REM? PX? Why not both?

Last week I refreshed my website to take advantage of new baseline 2024 stuff (and one old thing). Another change I made was a move from rem to px units. I pondered this change back in August. The idea being: keep rem for font size and use px elsewhere. This is a big change for m … | Continue reading


@dbushell.com | 1 year ago

What’s the deal with WebKit Font Smoothing?

Have you ever added this CSS? What’s the deal with that? I’ve always tried to avoid this CSS because a long time ago Dmitry Fadeyev asked us to Please Stop “Fixing” Font Smoothing. “The antialiasing mode is not a “fix” for subpixel rendering – in most cases it’s a handicap. […] | Continue reading


@dbushell.com | 1 year ago

Return of the Front-end!

My 2024 end-of-year resolution — it’s like a New Year’s resolution but better — is to return to the front-end! I’ve been neck-deep in server-side JavaScript this year. I’ve had a blast but my true speciality and passion lies in the browser. Front-end web standards have never move … | Continue reading


@dbushell.com | 1 year ago

HTTP Tunnel and Proxy in JavaScript

Saturday morning I attempted to code an SSH server in JavaScript and gave up quickly when e = g^x mod p. On Sunday morning I regrouped — I am a real coder 😤 — and I wrote an HTTP tunnel to prove it. An HTTP tunnel or HTTP proxy is used to forward web requests. […] | Continue reading


@dbushell.com | 1 year ago

Matt’s Malware

Over the weekend Matt Mullenweg — creator and would-be destroyer of WordPress — has seemingly released malware upon two million innocent websites. Every WordPress website I have ever built may be victim. For ongoing WordPress vs WP Engine updates visit: mullenweg.wtf Malware?! [… … | Continue reading


@dbushell.com | 1 year ago

Hey! Deno 2 looks fun!

Deno 2.0 launched with an announcement video that opens like an episode of Silicon Valley. I have to admit I do enjoy a bit of cringe acting. Following the intro is an Apple-esque keynote that I skipped through, like an Apple keynote. Bun 1.0 did it better and kept it shorter. [… … | Continue reading


@dbushell.com | 1 year ago

An Interesting HTML Parser Conundrum

Despite better judgement I decided to code a basic HTML parser. Not the full HTML spec but enough to create a tree of nodes and attributes. I’ve already written a streamable XML parser that has been working for my podcast web app. Parsing (most) HTML isn’t as complicated as it so … | Continue reading


@dbushell.com | 1 year ago

Misleading Container Queries

CSS container queries are spectacular! And I keep being mislead by the same mistake. It’s starting to irritate me! In this blog post I document a bad code pattern to avoid. The Mistake Consider this example with a and two elements inside: With the CSS below I’ve made box a […] | Continue reading


@dbushell.com | 1 year ago

Dumb Home

My “smart home” has gotten progressively dumber. Can you remember a time before the AI-pocalypse? The tech trend of yesteryear was to give everything with a digital pulse an IP address and a dubious 2.4GHz radio. The “Internet of Things” is what they called it. What a heap of gar … | Continue reading


@dbushell.com | 1 year ago

Is the Tailscale Magic Fading?

The Tailscale magic ✨ is starting to wear off. I gave positive opinions on Tailscale back in August 2022: “Basically Tailscale does one thing extremely well and the accompanying features aren’t bad either. The free tier suits me very well too! […] | Continue reading


@dbushell.com | 1 year ago

Hmmarkdown

I rolled my own Markdown library! It’s called Hmmarkdown on GitHub. It’s published on both JSR and NPM too. I’m testing in production on my own website! That might be a mistake but it’s too late now. ⚠️ Work in progress! ⚠️ Hmmarkdown is bad code and full of bugs. Okay, well it d … | Continue reading


@dbushell.com | 1 year ago

Docker Network Bugs and Fixes

Docker is great! Docker networks are grand. I know, controversial opinions! Docker and Docker networks are not easy to understand and often table-flippin-infuriating for newcomers. Trouble is they don’t get much easier for experienced users either. I’m by no means a Docker expert … | Continue reading


@dbushell.com | 1 year ago

JSR and Deno: Final Review 🚮

With my first impressions and second look of JSR (the JavaScript Registry) I tried to be positive and optimistic. I saw the potential that JSR could offer something more than NPM. Half a year after public launch, how is JSR looking now? Well… not good. But let’s start on a high n … | Continue reading


@dbushell.com | 1 year ago

The Deno Package Paradox

Deno packaging is now a fragmented mess. It didn’t start that way. This is what Ryan Dahl — creator of Deno and Node — is now saying. Contrast this to Dahl’s 2018 JSConf talk in which NPM and package.json were regrettable mistakes. To fix this Deno would use ESM imports with URLs … | Continue reading


@dbushell.com | 1 year ago

Summer 2024: Self-Hosted Update

Back in March I shared my spring self-hosted update. I had a new ZimaBlade to play with. I bought a cheap GeForce GT 710 just to try the PCIe. It worked. That graphics card is terrible (more on that later). The ZimaBlade is also, frankly, terrible. The CPU thermal throttles itsel … | Continue reading


@dbushell.com | 1 year ago

Git Granary

Captain’s log: it’s been 10 days since I entered the Git LFS rabbit hole. Following an emergency in-prod GitHub replacement I got nerd sniped by the Git Large File Storage API. Git Granary 🌾 Git Granary is the end result. I coded my own LFS server! I plan to self-host Gra … | Continue reading


@dbushell.com | 1 year ago

Private Submodules

For years now both my website source code and content have lived side by side in harmony within a public GitHub repository. This was convenient for the various build and deploy scripts I’ve monkeyed with. Fast-forward to July 2024 where I was forced to replace GitHub LFS with alt … | Continue reading


@dbushell.com | 2 years ago

Replacing GitHub LFS

GitHub sent me a scary email notification: 80% only one week into a monthly quota — oh dear! You might have seen my microblog note — this is the full article I promised. Basically GitHub’s free LFS is trash and you can do much better using any S3-like storage. Reminder that Git a … | Continue reading


@dbushell.com | 2 years ago

Notes – David Bushell

David is on board. Who else? adactio.com/links/21280 | Continue reading


@dbushell.com | 2 years ago

Microblog

I stealth launched a new microblog on this here website last week. You can subscribe to my microblog RSS feed — do it! My main blog is for longer, more considered content. I don’t want to drown the good stuff in mid takes, so to speak. That’s not to say my microblog isn’t worth f … | Continue reading


@dbushell.com | 2 years ago

Cloudflare AI Block

Yesterday I blogged about how Google and others ruined email. They act as gatekeeper, hamstring smaller email providers, and make self-hosting practically impossible. Email is not the only slice of the internet Google want control over. They’re after the web too using their searc … | Continue reading


@dbushell.com | 2 years ago

Google Spam

I listened to Mostly Technical episode 42 — great podcast btw — Aaron Francis talks about the struggles of sending an email newsletter. Google are quick to rate limit new domains to prevent spam. Spam sucks, but it concerns me just how much authority big players like Google and M … | Continue reading


@dbushell.com | 2 years ago

Twitter is Dead 🦤

It’s quite amazing just how dead Twitter is in my follows. It’s a real ghost town over there. Now I get more engagement from a few on Mastodon and nothing from thousands on Twitter. Twitter is dead. Like super dead. I joined Mastodon with uncertainty last April. It’s taken me a w … | Continue reading


@dbushell.com | 2 years ago