Murray (site owner) wearing shades and raising a single eyebrow.

oh hi!

I'm afraid you've stumbled into the personal playground of Murray Champernowne.

Ad hoc thoughts from an ad hoc mind!

What I'm Up To

An Alpha Arrives

Have you noticed something a little bit different around here?

Semicircular Borders

Creating a border along half of a circular element using CSS gradients and background images.

Crafty Field Migration

Migrating content between fields in Craft is not as simple as it might be. In the wake of Craft 5, I've been getting a lot of practice, and wanted to write up some of the techniques I've been using.

Craft 5, Matrix Entries, & Custom Sources

Craft 5 introduces entry-based Matrix fields, but being able to see the entries created this way is surprisingly tricky. Thankfully, it can be done!

2023: By The Numbers

A look back over the twelve months that made up 2023, via the lens of the data captured about my life.

No More Damp Stories

Storybook encourages setting the same arguments over and over and over again, but this is a pain to maintain. There is a better, DRYer approach, it's just not well documented.

European Accessibility Act

I read the entirety of the EAA – including all supporting documentation – so you don't have to.

Can You Code On An iPad?

How well does an iPad work as full code editing device; a veritable laptop replacement? That's what I wanted to find out.

A Ghost in the Machine

Or how I spent four days trying to debug a local Astro environment that refused to load any CSS.

IndieWebCamp Brighton 2024

I finally made it to an IndieWebCamp! It was a huge amount of fun and left me with many ideas, thoughts, and questions.

Strictly Typed Object Keys in TypeScript

Want to type a data object so that a given key (e.g. "foo") can only be paired with a specific type (e.g. Bar)? Now you can!

2024: The Year Of ...

What are my goals, themes, and overarching desires for the year ahead; and how does 2023 compare to what I had hoped it would become.

Explore?