Featured Posts

All 121 of my featured posts, dating from 20132023.

2023 5 posts

Not without sacrifice

With the boom of JavaScript frameworks and legends-come-true like the new CSS parent selector, we’ve borne witness to an explosion of new technologies and ways to build for the web. But what tradeoffs have we made for all these new bells and whistles?

2022 15 posts

The Environment-Aware Wrapper

Here’s a handy CSS technique to make sure your content isn’t obscured by the pesky notch that seems to be present on many phones these days, and it probably already fits nicely into your existing codebase!

Moving Targets

I was just working on some styling changes to my website and fell into a rabbit hole on URLs, the <mark> element and :target pseudo-class, and ended up writing an animation as a handy technique for drawing the reader’s attention.

Happy to announce that I’ve released version 1.0.0 of Eleventy Cache Webmentions! Although it introduces some breaking changes for earlier versions, 1.0.0 makes it a lot easier to attach Webmentions to your pages as data using eleventyComputed. Check out my…

I’ve got a quick little nugget of CSS to share today, a selector containing all interactive content.

in reply to a previous note

Happy to say the sparklines are going well—pushed an update yesterday, in fact, to allow them to inherit the color of wherever they are in the DOM for the colour of the line itself. Still working on posting a bit more!…


It’s been nearly nine years since I last updated my website's logo, the ethereal Raven, but sixteen years since I began my journey into web development. To commemorate reaching a 5-bit milestone, this year seemed like a good one to…

2021 5 posts

Fun stuff I’m proud of achieving on my website recently: finished building and released eleventy-cache-webmentions as a working and publicly-avaliable Eleventy plugin, which automates retrieving and sorting of Webmentions as well as being as kind as possible to the Webmention.io API automatic…

in reply to a previous note

Update: still not caught my own tail—I'll get back to that when I find my way out of these rabbit holes, and on that note, I bumped up to 1.708 commits/day as of today. Continue to do with that information what…

Finally figured out the problem with how I was caching Webmention avatars. One of those typos that got away for… maybe more than a year?…

Over the last couple of months I’ve made some small improvements and additions to 🐋 Bowhead, which is now at version 0.2.1. Since last posting about it, I’ve cleaned up the documentation, added some minor bits and pieces, and used…

2020 10 posts

I've been going through @wesbos’ JavaScript30 challenges, enjoying it a lot, and I completed challenge #17 today. Check out my log of completed challenges, follow along with RSS, or even join in if you’re interested!

Discovered that I can make custom waveforms for use with my noisy sparklines. Swapped from the humble sine wave to a an "Ahh" sound—like I used to go crazy for on early MIDI keyboards!

🚚 Bowhead is now at version 0.1.8, which adds a few things and fixes others, namely cleaning up what files are packaged for npm so as to send as little as necessary. If you're looking for a barebones SCSS solution for…

I must be in a bad mood this morning because @_iamarek told me, “you look like someone was using tabs” (instead of spaces) and I can't disagree

2019 30 posts

Recently tucked away a bulk of the meta information about my posts behind a visibility-toggling button. Not sure it's the best solution for my meta-heavy posts, but cleans things up for now, at least.

Interesting. Everyone who insists I should be more involved and interested in politics seems to have a very specific context they want me to get involved in. Almost like they have an agenda and what I think doesn't actually matter to…

@monosnap Figured I’d add to the heap of people reminding you that your subscription model is laughably bad and has lost all trust I ever had in your company.

Reply Targets

Providing a useful context to content written in response to someone else's blog post, tweet, toot, etc. helps a reader to understand the conversational nature of these back-and-forths. What abstractions can we make to the data that holds these reply targets, and how can those abstractions make for a richer reading experience and for a leaner publishing workflow?

in reply to a previous note

I think I'm going to try to make this happen. For a long time I have been building my site on a mostly vanilla Jekyll set-up as an example of a complex site that works on GitHub Pages, but I…

I would love to try switching my site from @jekyllrb onto @eleven_ty, but it looks like such a huge undertaking, as I have heavily customised the way I use Jekyll. Anyone got any pointers or quick changes I can make…

So I decided today to remove trailing slashes from my URLs and forgot that it would affect the URLs of posts in my feeds. Apologies if I’ve bombarded you with old entries!

Another 🐇 🕳 idea… Input a YouTube channel URL → The channel’s Atom feed is added to your Microsub "YouTube" channel. YouTube subscriptions without a Google account. No idea how original this idea is, but for now I’ve built https://chrisburnell.com/get-youtube-feed/

I still fail to see what benefits arise from shortened variable names. Why is "currPag" preferable to "currentPage", "btn" preferable to "button"? Without context, I'm guessing what the author intended, and this only makes verbal discussions about it all the…

Up too late, again, working on my latest rabbit hole project. So close!… but got to sleep.

@untappd_support Who should I contact about my application for an API key? It’s been way more than 10 days, and I don’t think my application has been rejected, but I don’t know for sure…

If I ever get Untappd API access I would love to try writing some code to help people syndicate check-ins, toasts, comments, etc. back to their own websites. Another rabbit hole for another day.


I have started auto-generating ShortURLs for each of my posts, old and new, and opted to implement Tantek Çelik’s NewBase60 for representing the unique URLs, but I've done so with Liquid so it plays nicely with my Jekyll-powered website.

Late night coding means I’ve managed to create a clear division between my website’s various post types. And alongside that, I’m now using NewBase60 for my shortened URLs, which happens for each of my posts automatically. 😌

2018 28 posts

Switched my main browser from Chrome to Firefox this week. Can’t say I miss anything in particular. Only gripe so far is having to change my muscle memory for keyboard shortcuts, which I’m sure will be a quick transition.

Super pleased to say that I just gave a short presentation about #indieweb to my team at work, and I didn’t butcher the explanation too badly, so everyone’s on-board! Feels great to be a part of this community and welcome…

At long last, I’ve managed to add the ability to edit my existing notes through my Micropub endpoint, and given my track record of totally making no mistakes, this is a good thing. #indieweb

I’ve made an average of 1.498 commits/day to my website over the last 5.5 years. ~670 of those commits contained fix in the commit message. Do with that information what you will while I continue to endlessly chase my own tail.

Numerals, Romanticised

For a better part of the year, I've been working on a Jekyll-based Progressive Web App, BloodBuilder, for managing my Sorcerer in a game of Pathfinder I've been playing with some friends. One of the many intricate parts of logic involves the ability to convert Arabic numerals to and from Roman numerals, so I wrote a simple Liquid include to handle this.

I’ve sat down with three developers this week to help them diagnose some errors, but as soon as I sat down the errors mysteriously vanished. Anyway, hit me up if you want a quote for me to come sit next…

Been keeping track of musical albums I’ve enjoyed recently at /music. Let me know if you have any recommendations I should check out!

If this makes it onto Mastodon 👋, it means my Micropub endpoint is syndicating correctly!

Couldn't be happier with how #SotB18 turned out this year. It was an honour and a pleasure to be involved in organising such an incredible event. Massive thanks to all of our speakers, attendees, sponsors, and supporters. We couldn't have…

Added Jeremy Keith’s Canvas Sparklines to my site, to further visually demonstrate the vast spaces of time between my posts! Next step: create less vast spaces of time between my posts (read: publish more).

2017 12 posts

Anyone using IntersectionObserver seen intersectionRatio>1? I’ve been rounding this attribute, toFixed(n), to help keep things clean.

Unique Pairs in SCSS

In creating a from-scratch grid for a redevelopment project, I was using SCSS to loop through various bits of data to generate a bunch of repetitive CSS, but I realised I had no DRY way of generating a list of unique pairs of items from a given dataset, so I set out to find out how.

Remapping Ranges in Sass

Great inspiration can sometimes be found in exploring available opportunities and embracing new ideas. In this article, I'll try to replicate a foreign concept in a familiar way, and explain why I decided to even do it.

2016 4 posts

An Extended Response

If you've dabbled in Sass before, you're likely familiar with @extend and @mixin, but is there any use-case for @extend? Given the benchmark performance of the two, can we still be confident in the cascade when @extending in Sass?

2015 4 posts

2014 3 posts

A Slice of Heaven

We know that webpages are composed of text and boxes. Lots and lots of boxes. But with the power and might of CSS3 we can do some fancy stuff that never used to be possible.

2013 5 posts

Viewport Woes

I've been around the block and seen many variations of variables and syntax in viewport meta tags. What's the correct way to go about it? And maybe I'll comment on the state of browsers today as well.

Annoying Navigation CSS

Navigation is crucial to a functional website. It is how your users find the information they're after; get it right, and your users are happy—get it wrong, and they go insane!

First Article Ever

Well, I've finally gotten my site up and running to a point where I can consider it to be a success. What was the process, and what did it involve? What mistakes did I make that you can avoid?