duncan­lock­.net
Tag Icon in the shape of a luggage tag
Figure 1. This pages tag list is using this tag icon from FontAwesome. This is a 550 byte SVG file, 346 bytes gzipped.

If you want to use SVG icons on a website and style them with CSS - then the SVG needs to be inline - i.e. the SVG markup needs to be included with the rest of the pages HTML markup.

Unfortunately putting things inline means that they can’t be cached. In this article I’ll show one way to get around this - and get the best of both worlds: inline styleable SVG icons, with caching!

Continue reading “Styleable Inline SVG Icons, with Caching & Fallback”

I’ve just emailed my UK MP to complain about government corruption & Owen Patterson. You should do the same. As always, we need as many people as possible to speak out.

This is what I wrote, if anyone wants some ideas:

<My Name>
<My Address>
<My Email Address>

Dear <MP Name>,

Like many others, I am angered - but not very surprised - by the latest revelations of government corruption, revealed by the corrupt behaviour of Owen Patterson.

I do have to admit to being slightly surprised that the government’s reaction to this was naked collusion and a blatant attempt to water down the rules & standards!

The existing Committee on Standards needs to be strengthened, not weakened by the introduction of another Conservative-dominated committee overseeing its work.

The government needs to adopt the recommendations of numerous independent bodies - such as the …

Continue reading “You Should Write to Your UK MP about Corruption Now”

How to find a git repositories default branch name


Hand-drawn map of the Kingdom of Hyrule.
Figure 1. Our hand-drawn map of the Kingdom of Hyrule. I drew a 2x1 grid in Inkscape and printed it out, then we filled it in as we went along.

It’s been about six months since the last update. We’ve mostly been camping, playing outside and generally enjoying the summer - although we have also squeezed in some gaming, here and there.

Favourite Games So Far

We spent almost all of our game time playing Legend of Zelda. It’s a towering achievement – a truly great game. I’m amazed that this thing is from 1986 – it doesn’t feel like it.

It’s also a great example of a different kind of co-op game. One where you play together by collaborating: discussing what to do & where to go next, how to tackle things, etc…​ We also took turns …

Continue reading “Speedrunning Computer Games History with a 6yr Old - Part 4”

Two screenshots of the nginx Welcome page, side-by-side, showing the page before the change and afterwards. The one on the left is dark-on-light and the one on the right is light-on-dark.
Figure 1. The nginx “Welcome” page, before & after my intended change.

I wanted to add dark mode support to the default nginx “Welcome to nginx” page. This is about the simplest change I could choose to make - it’s a simple, backwards compatible, small additive change to one single index.html file. My initial version of this change looks like this, and is added to the files <style> element, in the <head> section:

@media (prefers-color-scheme: dark) {
  body {
    background-color: #363839;
    color: #d1cec9;
  }
  a {
    color: #c4c4ff;
  }
}

So, this is the process of getting that change from my brain, into the upstream nginx codebase. 

Continue reading “How to Contribute a Change to Nginx”

cssmin is unmaintained & has a bug with complex :is selectors


Sometimes I want to have a just a tiny bit of CSS that’s unique, just for one page or post. I don’t want a whole stylesheet, or to have to add this to my site-wide theme, just for one post – I want a simple way to add it in the post itself.

This is how I did it:

Continue reading “Custom Per Page CSS With Pelican”

You can use the new CSS :is selector to write complex CSS selectors in a much more compact way


They will dig up your garden to get them.


How to allow python (or anything else) to listen/bind to port 80 without being root