RSSAmplifier

Blog

localghost.dev - all articles

Sophie builds fun things out of HTML, CSS & JavaScript, and writes blog posts about tech and mental health. This feed excludes recommendations about books, games, podcasts, recipes, etc.

localghost.devRSS feed ↗56 posts

Latest posts

Some things I’ve been enjoying: August 2026

When was the last time I did one of these? Last year? Here's a collection of things I've enjoyed from the last 8 months, I suppose. Video games Satisfactory I knew I shouldn’t buy this game after playing the demo, but I bought it anyway, and I’ve racked up over 100 hours on it so far. Please send help. I bounced off Factorio as I found it quite overwhelming, but Satisfactory has a bit more…

Time-based background colour transitions with Temporal and CSS color-mix

I've given my website a bit of a refresh! There's a slightly updated layout if you're on desktop, plus I ditched the etc page and I've revamped my links page to be powered by raindrop.io . The minimalist theme is still minimalist, but a bit more fancy. The vaporwave theme has a newly jazzed-up nav bar with some adorable little icons. But the biggest change is to the city theme , which was…

Making an original Jubilee line door button into a Hue light switch

There are many things that make me extremely uncool, but one of my particularly nerdy interests is the London Underground. The evolution of its iconic map, showing long-forgotten stations; old wooden-floor train stock I remember from my childhood; the Hidden London tours of old stations, closed-off platforms and soot-covered stairwells with beautiful original tiling. "Station closed" poster at…

Stop generating, start thinking

Throughout my career, I feel like I’ve done a pretty decent job of staying top of new developments in the industry: attending conferences, following (and later befriending!) some of the very smart people writing the specs, being the one sharing news on Slack about exciting new features of CSS or JS with my colleagues. The joys of working on an internal tool where you only need to worry about…

2025: The year in lists

Skip to bits you care about: The year in... ...furry friends ...retreating into my cave ...conferences ...gardening ...books ...music ...video games ...blog posts The year in... ...furry friends We got a dog ! She's both the most wonderful and most annoying thing I've ever encountered. It's hard work and she needs a lot of training, but she's come a long way in the time we've had her. 2026 will…

This website is for humans

Walking past a bus stop yesterday I saw an advert for Google’s AI search. The person in the ad had pointed their phone’s camera at a bowl of ramen, and the AI result explained how to reproduce it at home. How does it know? Because it’s trained on all the ramen recipes that multiple recipe authors spent hours, weeks, years perfecting. Generative AI is a blender chewing up other people’s hard work,…

Touching grass (and shrubs, and flowers, and dog)

I meant to post this in May, but then I went back to work after my final (sob) sabbatical, and I also lost a lot of time to Blue Prince at some point, so here we are in July. I thought I'd update with some medium-sized news in the form of a medium-sized dog: Her name is Penny. She's a staffy mix (and a rescue, so the rest is a mystery) and she's the cuddliest dog you've ever met. We've been…

This page is under construction

This is an updated & abridged version of the talk I gave at several conferences throughout 2022/23, including Beyond Tellerrand , CSS Day and FFConf . If you take just one thing away from this article, I want it to be this: please build your own website . A little home on the independent web. A reflection of your personality in HTML and CSS (and a little bit of JS, as a treat). This could be a…

The blog questions challenge

This takes me back to my teenage years, doing Friday Five on my blog and later on the sets of questions on LiveJournal that were known as memes . Thanks Sally for the tag! <3 Why did you start blogging in the first place? As a teenager I blogged obsessively, posting about every minute detail of my life, every boy or girl I liked, every exam I was dreading. In researching my talk about personal…

My month of rest and relaxation

After 4 (cumulative) years of service at my job in late 2023, I became eligible for a 3-month paid sabbatical (honestly what a perk). My only prior experience of a work sabbatical had been the offer of a 6-month paid sabbatical after 25 years of service at a past employer, so needless to say, this was very exciting indeed. Cautious of being alone with my thoughts for 3 months – my husband couldn’t…

I repaired my Steam Deck and it was fine, actually

For Christmas 2022, I bought my husband a Steam Deck. It's a handheld games console that runs a version of Linux (so you can also use it as a computer and plug it into a monitor, if you want), and works seamlessly with nearly every game in your Steam Library. It's GREAT. I 100% use it more than he does, to play all manner of weird and wonderful things. It plays older games perfectly, and I even…

2024: The year in lists

It’s Boxing Day and I’m a small pile on the sofa. We successfully Did Christmas at ours this year, and I never want to see another mince pie (until next year). So, what better time than now to look back on the year? Skip to bits you care about: The year in... ...big life things ...conferences ...gardening ...travel ...books ...podcasts ...music ...video games ...blog posts ...Christmas dinner The…

Some things I&#39;ve been enjoying recently (November 2024 edition)

A roundup of fun things and projects. TV I mentioned to my husband that I'd never watched Life on Mars, so we're watching it all the way through, and it's brilliant, obviously. I'm horribly annoying when watching things that have been filmed in places I know because I will a) announce where it is and b) complain if a character goes from one place to another in a way that isn't geographically…

The art in everyday life

I was very fortunate to speak at another excellent Beyond Tellerrand last week, alongside some brilliant and wonderful people. Once again I was inspired by the variety of topics and messages people shared on the stage. Alongside the usual artists’ inspiring career stories and techies’ (equally inspiring) web design magic, there was a strong undercurrent of anticapitalist messaging in a way that is…

You should go to conferences

Those of you who know me (or who have been reading my posts for a while) will know that I'm often at conferences. I tend to speak at around four a year, plus attending one or two on top of that. I also know a great many people who never go to conferences, and I think they're missing out. Conferences are a fantastic way to not only broaden your horizons when it comes to your job and your skills,…

New garden theme

I've built a new theme for this site, inspired by my love of gardening as well as one of my favourite video games. With no pixel artistry skills to speak of, I'm grateful to the various artists over on itch.io , who I've credited on the about page, for all their lovely creations!

liveness probe

After an initial burst of blogging energy January followed by a series of automated posts featuring good things I’d read recently, it fell off a cliff towards the end of March. I didn't get bored, I promise! Life got extremely busy and reading through an ever-growing mountain of RSS feeds became too much of a chore. Eventually I declared bankruptcy and marked all as read, so if I’ve missed…

Different ways to mock third-party integrations in Jest

A few years back I got so bored of taking attendance for my choir that I wrote a Slack integration to do it for me (I got us on Slack in 2014). That evolved from a dodgy Python app triggered by slash commands into into a neat little Typescript suite called Choirbot that triggers via cron job. It does everything from posting reminders about upcoming rehearsals to reporting on attendance stats, and…

New keyboard alert! Mykeyclub MKC75

Say hello to the Mykeyclub MKC75 ! It's so pretty! This is going to be my new office keyboard. Weighted aluminium case, so nice and heavy without too much rattle. It's got a rotary encoder (that's a knob to you and me) which controls the system volume (I look forward to forgetting it's there). I put in Dangkeebs HaluHalo linear switches which I got from SerpentKeys . They're a tiny bit louder than…

Twitter reply guys were bad, but Mastodon is no better

Mastodon has often been touted as some kind of grassroots utopia compared to the bro-niverse that is Twitter. But in my experience it's exactly the same: full of sanctimonious reply guys. Before the great Twitter exodus I'd amassed quite a following through a carelessly curated campaign of shitposting, and occasionally a post would go viral. Some really quite nasty things happened sometimes.…

All Day Hey 2024, and some stuff I bought in Leeds

First conference of the year is done, and what a conference it was! I begged Josh to let me speak at All Day Hey in 2022, and he promised me a slot in 2024 which at the time seemed forever away. As seems to happen a lot now, I blinked and it was just around the corner. It was the first outing for my new talk on technical migrations, and I'm really pleased with how it went. If you missed All Day…

Upcoming talk: All Day Hey, Leeds - 2nd May 2024

Two years after All Day Hey made me realise I missed the web , I'm really excited to be speaking there myself! I'll be talking about technical migrations – how we recently pulled off a Typescript migration at Monzo, and things you should consider when doing a migration yourself. And what a line up - my good pals Hidde and Ana , plus UX whiz Imran Afzal , and two of my lovely Monzo colleagues…

Some things I&#39;ve been enjoying recently

This isn't going to be a tech post, mainly because I haven't really been enjoying tech things recently. I spend all day thinking about technical integrations and system architectures and requirements, so I don't really want to do anything dev-related when I get home. Every time I see people talking about Astro or web components or new CSS features I feel bad because I know I should try it out and…

So you&#39;ve decided to get into mechanical keyboards

This is a dangerous path you're about to walk down. Is your wallet ready? Whether you prefer the smooth glide of linear switches, the gentle bump of a tactile switch or the full-on audio assault of a clicky switch, there’s something extremely gratifying about typing on a mechanical keyboard (even if it’s just a reply to someone who is wrong on the internet). And it’s even better if it looks as…

Automated weekly links posts with raindrop.io and Eleventy

Edit 04/02/24 to change the comparator date from midnight on previous Saturday to midnight on previous Sunday to prevent duplicate links being published. A post that’s been getting a lot of traction recently is I miss human curation by Cassidy Williams, in which she laments that we’re so reliant on algorithms to show us new stuff now, instead of having it recommended to us by other humans.…

How I deploy my Eleventy site to Neocities

Skip to the bit you care about: About Neocities Hosting a static site on Neocities Continuous deployment to Neocities with Github Actions Scheduling builds I’ve hosted this website in a few different places since I started it in 2019. It started out on Netlify, but after my post about everything I googled went viral, I exceeded the bandwidth of the free plan. Then I moved it to Vercel, which (at…

Sending webmentions from a static site

It occurred to me this week that even though I’ve been using webmentions as comments for a really long time, I hadn’t actually been sending them myself. The shame! Here's how I set it up. Edit 22/01/23: I've added in some checks to make sure I don't send webmentions for a post if I've already done it before. Certified good egg Remy Sharp has a tool called webmention.app which will send webmentions…

Just because you can doesn&#39;t mean you should: the <meter> element

I came across Sara Joy's (very cool) demo of CSS theming without classes today, and looking through the code spotted a couple of elements I hadn't come across before: <progress> and <meter> . Granted, I've probably seen the <progress> element plenty of times, but I struggled to see what the <meter> was for. While <progress> is fairly self-explanatory – it shows how far along something is, such as…

Remembering the early 00s teen website scene

localghost.dev has a new theme! In search of a little project over the merrineum that didn’t require me to learn anything and therefore use my brain, I remembered there was a stylesheet hidden in the themes directory of my website that I hadn’t finished. The theme: teenage personal websites in the early 00s. It was a lot of fun to build, and really nostalgic to recreate the websites of my youth.…

2023: The year in lists

Last year's roundup post was good fun, so I decided I'd do another one this year! I feel like I blinked in April and suddenly it was December. Skip to bits you care about: The year in... ...conferences ...travel ...books ...podcasts ...music ...video games ...learning things ...purchases ...apps and programs ...blog posts ...the web The year in... ...conferences After a bumper conference year in…

Engineering progression for humans

As engineers it can be unclear where we’re heading, especially when we’re heads down writing code all the time. It can be hard to think even a few months ahead. What does an engineering career in a larger organisation look like? What even is a staff engineer? How long should you stay at the same company? Whether you're new to the industry or several years in, there's a good chance you've…

Beautiful musical chaos

When I tell people I’m in a choir, some of them imagine the same thing: churches, robes and choral music . Pious singing faces. (To be clear, I’ve done that kind of choir before and it’s great in its own way, but that’s very much not what goes on in this one.) Generally, though, people respond with the question, “what kind of choir is it?”. What indeed. A post by Phil Hawksworth earlier this year…

How to schedule posts in Eleventy

I scheduled this post, isn't that cute? I find I have very little energy to write blog posts during the week, but occasionally I sit down on the weekend to write something and have a few ideas that turn into multiple posts. I'd like to be able to publish posts more often, but realistically I won't be writing things more than once every few weeks (which is okay!). I decided I needed to be able to…

Building post types and category RSS feeds in Eleventy

I mentioned recently that I'd built separate RSS feeds for different kinds of posts. Here's how I did it! I had to do a bit of fiddling to get this working in Eleventy – this is one of the few things I think Hugo actually does in a simpler way, as you can create different rss.xml templates inside specific layout directories. My solution is not especially sophisticated, but it works! (If you know a…

Introducing separate category RSS feeds

Recently I've been inspired by folks like Michelle Barker and Amy Hupe doing National Blog Posting Month (NaBloPoMo!), and seeing folks writing down little thoughts and things they've encountered. I'm absolutely not doing NaBloPoMo, I am far too tired, but I thought I'd make it easier for myself to write things down a bit more often than once every three to six months. I've introduced some new…

"AI", and the trouble with inaccessible SaaS

I wasn't particularly enthused by the alpha release of Vercel's v0 UI generation tool this week. Provided with a prompt, it produces React code with Tailwind to style it. It's being marketed as a prototyping tool, but was described by Vercel's CEO on Twitter as "production-grade" . Well, which one is it? To be clear, my issue isn't with the concept of large language models (LLMs) in general: I use…

Beyond Tellerrand: beyond amazing

I had the absolute privilege of opening Beyond Tellerrand Düsseldorf recently. Truth be told, I had no idea what to expect, other than a great conference (from what everyone had told me), but it was incredible! (Apologies to anyone who tried to chat to me on the Monday after my talk – if I seemed a bit distant, it was because I was literally struggling to string words together because of…

Painting the whole beetle: an adventure in learning to learn

I'm not very good at being bad at things. In fact, I have a track record of giving up on things if I'm not immediately good at it. (So I guess I'm good at giving up on things?) Case in point: the piano. There's an electric piano gathering dust on a shelf in my house which was until recently gathering dust on a stand in the living room. A few years ago I started having lessons with a view to being…

Everything should have an API: adventures in trying to automate stuff

Inspired by Robb Knight I want to build my own /now page . As a teen I used to use PHPCurrently on my personal website to list what I was listening to, thinking, feeling, even what my MSN display picture was. Here's an objectively terrible screenshot from peak Evanescence phase, circa 2004. I have grown up a bit since then, thankfully. And just as Robb did, I want to automate as much of it as I…

I miss Twitter

I'm still sad about Twitter. I think what has emerged for me since switching to Mastodon is an altogether healthier relationship with social media. I'm not checking it constantly and I'm not obsessing over how my tweets are doing. I can post things without worrying that idiots have saved searches for key words/names and are going to come and shit all over the replies. And it feels pathetic to be…

2022: The year in lists

I don't usually do these end-of-year reflection posts, but at a time where I feel like I'm finally starting to hit flat land again after a year of climbing hills, it seems like a nice thing to do, and a way for me to reflect on my own achievements. I've spent a lot of time mulling over the bad things that happened this year so I want to focus on the good stuff. For that reason, there won't be much…

Preparing for conferences

I've been speaking at conferences and meetups on and off for nearly five years now, and a few people have asked me what the process is for preparing a talk. So I thought I'd share how I approach it. For me, the talk process is a circle: It's the circle of talks. It repeats around and around forever. There is always a point at which I hate my talk and wish I'd never done it, but there is also…

Building a website like it&#39;s 1999... in 2022

Edit May 2023: the Bridgy integration with Twitter no longer works due to Twitter shutting off API access so some functionality won't be working any more! Note: This is a written version of a talk I gave at State of the Browser 2022 in October 2022! Motion warning : This page contains quite a few animations, but if you have reduced motion turned on, they won't play. The web used to be weirder I'm…

Everything I googled in a week as a senior software engineer

Three years ago I wrote a post called Everything I googled in a week as a professional software engineer , and it clearly resonated with people, because it went pretty viral. It still gets most of the pageviews on this website. Well, a lot has changed in three years: I got promoted and I'm now a senior engineer and lead the web engineering discipline at Monzo . But one thing hasn't changed: I…

When going back doesn&#39;t mean going backwards

Hey internet! Last time we spoke, I was in a bad place. Burnt out and off work. Well, in May I made the decision to quit my job at the startup after 7 months, and in June I accepted a new job at... my old job. So I'm back at Monzo, working at the bank . You don't often hear about people going back to jobs they've left. It turns out it's really nice, because you already have friends there and…

Burnout, a cautionary tale (and a plea to take a break)

It's Easter and I'm off work til the end of the month. It was originally just going to be for a few days as I'd used up most of my holiday already, but after I burst into tears at my manager on Wednesday during our 1:1 when he asked me how a project was going, he suggested I might need a bit longer (good manager). I really love my job, I love what I do and I love my colleagues. Before the pandemic…

Start at the beginning: the importance of learning the basics

If you're an early-career developer, Twitter is overflowing with people tweeting great tips – and some absolute rubbish – about how to improve your skills and become better at your job. I've spoken to more than a few people who've asked me, "how should I start?". And I tell everyone the same thing: learn the basics. However you learn best – book, video, interactive tutorial – you need to learn…

The right tag for the job: why you should use semantic HTML

I've come across a lot of websites in my career (and in daily browsing) that are straight-up inaccessible. If you've ever worked on a project that is riddled with accessibility issues, you'll know that fixing these problems is a mammoth task - it needs time , it needs people , it needs prioritisation ... it costs money, basically. As I mentioned in my blog post 7 myths designers and developers…

A typical day: pandemic edition

This is a series started by Colin Devroe . Some other lovely folks have written their own, including Sara Soueidan and Cassie Evans . This post would have looked very different prior to March 2020. Before then, I'd be out at events, meetups or social meetings several nights a week, in the office every day seeing people, and commuting to and from work. Needless to say, as someone who gets energy…

Give yourself a break: lessons from burnout

I started writing this post a few days ago, and was so exhausted I couldn't actually be bothered to finish it, which tells you a lot really. And if you're too exhausted to read another blog post, here's a summary: have a rest. Go and do something nice. Tech can wait. A couple of weeks ago (possibly - I have no concept of time any more) I tweeted this, which seemed to resonate with folks: the only…