Longform writing that tends to make people angry.


React is a useful little library for handling components and their various states. But it has become something more. Let's sit down around the campfire and have grandma explain why she doesn't like it.

Construction work, code, and what we value

Having spent a week DIYing, I find myself thinking of devs who claim "I can do anyone else's job, but no one else can do mine". Mate, as the daughter of a Trade family, I implore you go work on a construction site for a month. I guarantee that it will fucking BREAK you. You couldn't handle it. I say this as someone who grew up on building sites, who drove diggers, who learned to saw before she could write.

"But code is hard, and manual stuff is easy". Haha, NO. Code is currently WELL PAID, which is why you think it's hard. That's a very different thing from one actually being more difficult than the other. (Homework: reflect on how you use capitalism to determine the worth of others)

Most mediocre devs will react angrily to this. "I could put up a shelf, but that thick-thumbed oik couldn't compile an app!" Sweet arrogant dev, a shelf is the "hello, world" of construction. You wouldn't call...

The Real Dark Web

There are developers who are quietly building their sites and apps, day in, day out. But they are rendered invisible as they are not making use of the cutting-edge technologies that the bleeding edge folk love to talk about.

A11y Club

A11y Club is super fab, and I always love coming here. Here's some live notes.

Beyond Tellerrand Düsseldorf 2019

Quite possibly the most inspirational event that I've ever been to. I will 100% recommend Beyond Tellerrand Düsseldorf to anyone who cares about design and humanity and tech.

I'm trying to record my notes here for those talks I attend.


I miss webrings. Let's bring them back and make websites about people again!

Sonnie's Edge

Wait, there's a TV show called Sonnie's Edge?

Week note 2

I spent most of this week travelling in the UK for work. As always, a visit to the motherland was simultaneously comforting and intensely weird. I always forget that London is enormous, and it can be utterly overwhelming after being in Berlin. I also forget that Londoners are decadent and spend-happy in a way that I would find disgusting in Berlin. I do not blame Londoners for this, but instead blame the prevalence of contactless payment cards, and the delicious food and drink everywhere.

My flight from Berlin to London was delayed and I was forced to spend seven unnecessary hours in Tegel Airport. This must surely fall under some kind of UN declaration against cruel and unusual punishment.

I turned 40. Happy to report that this is pretty much the same as being 39, except the existential dread is ratched up by about 15%.

As a turning 40 present my partner and I indulged in a weekend in a ...

Week Note 1

I've heard the phrase "week note" bandied about by some people. I love the idea: each week you sit down and you force yourself to write, summarising the previous seven days, and anything interesting you've found out during them. As someone who fancies herself as a writer (in the full Victorian sense), but rarely types anything more creative than a policy document, this forced writing mode is very appealing. So.

  • I've spent far, far, FAR too long fucking about with my website. Having started out with Geocities, then HTML, then Moveable Type, then Wordpress, the Drupal, then Jekyll, then Hugo, then Metalsmith, then Craft CMS, I have finally landed back at Drupal. No, don't fucking scoff at that. For a start, I know it well: I contracted as a Drupal developer for several years. I've been through the enormously steep learning curve (a curve not owing to particularly high tech features, but simply...

The Old Country

As Brexit stumbles nearer, I've been trying to find ways to keep EU citizenship. Turns out the Irish descent route is closed to me. 😭

CMS Procrastination

I think my brain subconsciously figured out that if I just keep rewriting my blog in the latest static site generators I'd never have to actually write anything. Time to put a stop to that.

CMS via Dropbox

I'm experimenting with serving the content of this static site from Dropbox, rather than Github.

While deploying from Github is a million times easier than dealing with the Dropbox SDK, I've found myself blocked from writing by not wanting to go through the annoyance of writing a file, applying frontmatter, commiting to git (which might mean stashing work on another branch, and pushing it. I've also found myself not wanting to write drafts on the site, fearing that some overly interested imaginary horde is going to read the public Github codebase and critique my pre-published prose.

Now I can publish both articles and notes a lot easier. In fact notes are now a matter of writing a new markdown file in a dropbox folder (no frontmatter needed as it's supplied by the build chain) and, assuming it's marked for public consumption, it will automatically get made live on my website.

Okay, vim ~...


reserve all other single-letter-dash prefixes for future use. In practice we have seen very little (if any) use of single-letter-dash prefixing of class names by web developers/designers, and thus in practice we think this will have little if any impact/collisions. Certainly far fewer than existing generic microformat property class names like "title", "note", "summary".

Ah, well, no. Lots of people use single letter prefixes for CSS. The global company that I work for does exactly this. Famous web authors use it.

I love the Indieweb, but the "microformats as HTML classes" thing is just something I find really hard to get on board with. They could have used data attributes. They could have used a blob of JSON in the head of each page, like does. But no, they went with something that directly collides with presentational CSS.

You can read more about this terrible aspect of microformats...

The mysterious case of missing URLs and Google's AMP

When I saw a speculative article about Google wanting to "kill" URLs appear in my news feed, I didn't think too much about it.

Trying to hide "ugly" URLs... well, that feels like a natural thing for an app to try and do. Designers of apps often (erroneously) assume that users cannot cope with "technical" things like URLs and try to hide them away, lest the user start bleeding from their eyes.

In fact some browsers already go so far as hiding parts of the URL. Safari, for example, shows only a domain name in the normal URL area until it is clicked, whereupon the full URL appears.

The primary reason in the story for hiding complex URLs makes sense. Phishing scams often involve creating complexly long URLs where the section visible in the browser chrome can be mistaken for being a real URL.

The story seems pretty legit, with Adrienne Porter Felt, the engineer interviewed in Wired, seeming to...

It's time to say goodbye to Twitter

When I first got on Twitter it was like usenet in the 90s. Just a bunch of people talking shit about things that they enjoyed. It was small enough that everyone seemed to know each other, but large enough that there were still interesting nerdy people to find and get to know and enjoy the company of. The perfect little club.

But at some point it went horribly wrong.

Because fast forward a decade and an average day on Twitter is witnessing virulent transphobia, arguing with literal nazis, and spending resulting time blocking all those fucks and their followers and living in an echo chamber of increasingly terrible news and bad memes recycled from Reddit.

Where did the fun go?

When did it stop being fun? Was it ever fun? It must have been at one point. I've got those happy memories. I wouldn't lie to myself, surely?

In retrospect, a single giant character-limited IRC server that you can't ...

Removing Site Tracking

I've just pushed a commit to my site that will remove Google Analytics tracking from this site for good.

It was just 4 or 5 lines of code, but it represented me being complicit in the tracking of you, the beautiful person reading this, as you moved across the web.

Google Analytics is in the same breed of tracking software as Facebook, and I'm sure you all know how vehemently against Facebook I am ("Facebook are fucks" is my official statement). So why would I allow one of those things on my site, but not the other, when they enable exactly the same level of awfulness?

In fact, in an act of rank hypocrisy, I myself disable all loading of Google Analytics whenever I visit a web page. Why should it be okay for me to force this spying script on each visitor, but perfectly okay for me to disable the same script when I make my merry way across the web?

In truth, Google Analytics has always been...

IndieWeb Camp Berlin 2018

I've just spent the day at IndieWeb Camp Berlin and it has been SUPER fun.

Getting started with data science tools

My girlfriend recently attended an introduction to data science workshop at Thoughtworks that assumed that the attendees had a working knowledge of package managers and tech tooling. As she's an actual, you know, post-doctoral research scientist helping build insights into Alzheimer's Disease, she really doesn't have to time to fuck around learning tech tools for fun, and so didn't have a machine ready to deal with this stuff. But being the kind soul that I am (and who likes having a happy partner), I wrote up how to get a machine working with data science tech tools, and I'm sharing it with you here.


This installation guide assumes a completely blank install of MacOS High Sierra. If you're following this guide on any other OS or machine state then you may have software that interferes with this! This is just a rough guide, not an infallible instruction list! Be warned!


A day without JavaScript

As I write this it's raining outside, and I'm trying to avoid having to go out into the murk and watch the Germans conduct their annual diversity maneuvers. I've therefore decided to pass my time by doing the one thing that counts as a religious crime in web dev land: I'm going to turn off javascript in my browser and see what sites work and what sites don't.

I know, I know, my life is simply too exciting.

Now, I know that because I write a lot about the universal web and progressive enhancement, people assume that I must hate javascript.

This would be an incorrect assumption.

I simply hate people relying on brittle client-side javascript when there are other alternatives. In the same way as I wouldn't rely on some unknown minicab firm as the sole way of getting me to the airport for a wedding flight, I don't like relying on a non-guaranteed technology as the sole way of delivering a web ...

Speaking at Frontend United 2017, my first ever conference

I got back last week from Athens, where I was privileged enough to be able to give a talk at Frontend United 2017.

Despite attending many conferences over the years, this was, in truth, my first time speaking in front of a conference audience. Oh, I'd spoken at meet-ups before, and even compered at large events, but speaking at a conference that people had paid actual money to attend and hear me say things... fuck, I'd never done that. I'm used to hanging around in the crowd, and watching others do their thing on stage, rather than standing in front of everyone and talking.

It's good news however, as the talk went extremely well. None of my anxiety dreams were realised. I didn't fling the microphone across the room while speaking (as was one fear), nor did I stumble to a halt and forget what I had to say (as was another). I definitely didn't pass out and wake to find myself naked on stage...

User Queries: Returning control to the user

As I write this I'm trying to use my fancy iPad in a cafe. The cafe doesn't have wifi (because this is German) and I'm being forced to tether to my phones 3G connection (which is piss-poor because the 0.5 meter of Berlin concrete creates quite the radio dead zone).

I'm just trying to access one particular webpage. Just one. I only want to find out some information. Seriously, it’s just a recipe for a cinnamon roll that I’d heard about.

The site I'm accessing is being good, for once. It's using the srcset attribute to send me images that are appropriate for my display (My editor made me look all this up afterwards). Unfortunately, what the browser has determined as appropriate for my display are quite high resolution 2x Retina images. They're coming down over the crappy 3G connection at KBs a second. I doubt I’ll ever see them.

I'm also waiting for the fonts to download. Here the designer ...

Staffordshire Oatcake Recipe

Staffordshire oatcakes are only to be found in my home region of The Potteries. They are the fucking business. You stuff them with cheese and mushrooms and then stuff them in your mouth.



With bad German translations because these are oatcakes born and given form in Germany.

  • 225g fine cut oats / hafer flocken (extra zart)
  • 100g wholewheat flour / weizen vollkorn mehl
  • 125g bread flour / weizenmehl type 550
  • 1tsp salt / salz
  • 2 packets instant yeast / backhefe (about 14g total)
  • 500ml warm milk / milch
  • 500ml warm water / wasser
  • 1tbsp sugar / zuker


  • Mix the oat, bread flour, wholewheat flour and salt in a bowl.
  • Mix warm milk and warm water (hot water and room temp milk works just as well)
  • Add yeast and sugar to a side bowl and use some of the liquid to make a yeasty soup. Wait for the soup to froth.
  • Add the yeasty soup to the dry mixture and then add the rest of the liquid, ...

Some feedback from the Internet of Men

My last post made a lot of men quite annoyed. In a surprising move they felt the need to tell me about how annoyed they are. I know, right?

These poor annoyed men fell into at least one of three camps:

  • Insecure developers who felt I was belittling people who code in their spare time.
  • Mens Rights Activists who felt I was ignoring men who didn’t have the time to code.
  • Code Nazis who felt I was undermining the developer master race.

Insecure Developers

“But, but, I code in my spare time! I’m not a bad boy! I’m not!”

Sweetie, no one said you were bad for coding in your spare time. You’re very lucky that you’re able to do so - I’m jealous that you can!

But when someone criticises the systematic problems that pile emotional, physical, and time labour upon those less privileged than the straight, white, male “default, they’re not criticising you personally.

When someone criticises those systemic...

An open letter to the guy who wrote that 'Always Hacking' tweet

Joe, if you want an insight into why the web industry is so broken, just look at the tweet that you wrote on Christmas Eve:

“The best software developers I know are always hacking over the holidays. True story." - Joe McCann

Joe, people are angry at this tweet. Can you guess why? Perhaps it's the implication by you, as a CEO, that anyone not working over the holidays is not good enough? (I know you didn’t consciously mean it sweetheart_. Shhh, sshhhh, stop talking.). Is it the pushing of the broken narrative that coders “never stop coding”? Is it that the people likely to hacking over the holidays are those privileged enough to be hacking over the holidays?

Is it all of the above?

Joe, if you’re a young single straight man developer - the cliche of tech workers - then yes, you probably do have plenty of time to be hacking over the holidays. You don’t even question this notion. Going over...

Yes, progressive enhancement is a fucking moral argument

I rolled my eyes when I saw this post circulate around the webosphere. I knew it was clickbait, but I clicked it and read it, because what else is a whiney SJW feminist fuck meant to do while she's drinking her coffee in the morning? But then, as I scanned the page, I realised what deeper level of fucked-up-ness it represents.

But let me back up and explain this. First of all, the article by @joshkoor revolves around the central notion that bringing Progressive Enhancement (PE from now on) into our work is a burden on the modern web developer. You see, any site should be able to be rendered 100% in javascript, and that's okay. Because the modern user has javascript, and expecting javascript to not be available is just plain pig-headedness. Those whiny PE proponents are making a moral case for PE, rather than taking a utilitarian and path-of-least-resistance approach.

Fundamentally, the article...