Les technologies
Langages
Remy Sharp
Remy Sharp est un éminent développeur front-end, auteur et conférencier qui est bien connu pour son expertise en JavaScript, HTML, CSS et les technologies connexes. Il a contribué à de nombreux projets open source et est l'auteur de plusieurs livres de développement Web populaires. En tant que conférencier, Remy a donné des conférences lors de conférences à travers le monde, partageant ses connaissances et ses idées avec d'autres développeurs.
External Links
Check the latest blog posts of Remy Sharp below
Redesign '26
14 septembre 2026
Around June this year I decided that I wanted to spruce up my blog. I had landed on Elliot Jay Stocks and Jon Hicks' web site and it really made me want to get my blog to something I'd consider visually appealing. I do know that I've set the bar way, way too high by looking at their sites. Specifically because if you're reading this on my website (and not RSS), you'll know design is not my strong suite. Grey is. Boxes and grey. Given that my last redesign was 18 years ago, I'm hoping I've learnt a few design tricks along the way.
text-decoration-thickness discrepancies
10 septembre 2026
I'm in the process of (attempting) to redesign this blog, and in doing so, I'm using a few of the new bits (to me) of CSS to make things fancy. In this instance, I'm using text-decoration-thickness on my titles, and wanted to document the quirks I noticed.
Before you buy an LTE Pixel Watch (for your teen)
07 septembre 2026
The boy is 14 and regularly does long outdoor runs. He tracks his run with Strava by carrying his phone with him. But carrying a phone (because they're bulky) is a pain. He also plans to swim in the sea during summer and we've all said we don't want him having a mobile just left on the beach until he comes back in. Mum (his, not mine) also runs and she's been caught in the past a few miles away without a phone, injured and asking a stranger to use their phone to call me for help (she was okay after some recovery). So the agreement was that we'd try to find a smart watch that also has call and text facility (ie. LTE). Lots of hunting around we ended up with a second hand Pixel Watch 2 and planned to add an eSIM to his existing phone plan. You know what they say about the best laid plans of mice and men? Well, it goes sideways is what.
16 for Tia
27 août 2026
Tia would have turned 16 this year. Another marker that wouldn't come to be. After Tia was lost and born to stillbirth on 31 August 2010, we quickly had a slew of firsts. The first Christmas without her. First mother's day. First birthday. First day at nursery, first day of school. Not turning 10. 16 is another big age. Then so is 18 and all the others. As a family, we always try to mark her day with something we do together. Something special. For her 10th year, Julie ran ten 10K runs. We were all incredibly proud. This year, I suggested we walk. The thought was inspired by chatting to Jake, and originally I suggested we could walk 16 miles. We'd decided this much earlier in the year, and we started to do some smaller trails - something like 1-2 hour walks. I was pretty apparent, particularly with how my MS affects my feet, that 16km should be the target. We carefully worked to find and customise a route (we used AllTrails but also tried Outdoor Active) so that we could find 16km (about 10 miles) with a midway stop for food. We settled on a walk in the surrounding Arundel area where a good part of the walk was along the river Arun. We extended our walk a bit by adding a tiny side quest on the day Really this post is for me to mark and remember the day. Here are some of the highlights I remembered: We associate butterflies (and Gerber flowers) with Tia, and each time a butterfly joined us in our walk, to me, it was like a memory of Tia was with us. We waved at the trains that went past and it made us all cheer when someone would wave back. There were a LOT of cow pats! About 2/3rds of the way, with our boy (nearly 15) following at the back, he calls out "I'VE GOT 5G!" (we had actually cached all the maps offline to make sure we didn't get lost, so heaven knows what he wanted 5G for). Coco (our 3 year old dog, part chihuahua part yorkipoo - ie. small) joined us, also around 2/3rds of the way, she was carried in a backpack (on the front) - we figured she'd done her dues. We ended up walking for 4½ hours (the entire start to end was 6 hours). We clocked 25K steps and raised over £500 for SANDS. I had a little cry when we finished and hugged my (sweaty) family close. It was such a wonderful and special day 💞
I'm not done using AI
13 août 2026
I recently read this post I'm done using AI (which is primarily around coding but also for general chat). Along with this post, I've read many other posts over the last two months (I have a new RSS reader) that swing on either side: why they're quitting, why they love it. Thankfully I've managed to miss the "I want to shove AI down your throat" posts. What's interesting (to me) about Brett's post is that their introduction experience of LLMs was very close to my own, but the outcome for me is quite different, and I think I know why.
Progressive Enhancement inside of JavaScript
05 août 2026
Lately I've had the opportunity to travel by train and coach, during which time I also tend to work. It's really only during these periods that I'm reminded of how web sites fail so terribly over a slow connection. On the odd occasion I can be guilty of this too. I had a tiny tool that takes markdown and renders it for quick reading (no apps, or split view in VS Code, etc). When I loaded it up on the train, the page asked me to drop the file in to be rendered, which I dutifully did, only for the page to load the source markdown. It's nothing new, but Progressive Enhancement doesn't only apply to HTML being enhanced with JavaScript. It also applies within JavaScript. Sometimes this was the cut the mustard test, but sometimes it's about thinking laterally about JavaScript. In particular, can I capture the user's intent if they try to interact with my page before it's fully ready?
when-do web component
24 juillet 2026
I saw recently saw a blog post (which annoyingly I can't find any more, but I'll link it if I do), showing off a web component that if I recall correctly, would show (or hide) it's contents depending on a browser feature (I'd guess using the @supports query). That reminded me that I wrote a web component that I use quite a bit (particularly with FFConf), which should really be called do-when, but it's not, it's (stupidly) called when-do (the dash, I guess, being a comma in my head). The component says: when a time occurs or passes, do a what: show, hide or scroll-to. You can get the code from github - which also includes an interactive demo that lets you try the settings.
Wildcards In CSS
11 juillet 2026
Just a brainfart here, but it's odd that even though we have wildcard selectors throughout CSS, and even partial selectors (I'll explain in a bit) we don't have partial wildcard selectors on top level elements. I'm not talking about the "star" rule, but what I imagine would be a wildcard on elements selector.
Decompressing 33 signal bytes
29 juin 2026
In my RSS reader, I stumbled upon this code-golfed (i.e. minimised to death) snippet that's fairly clever, but from the code, utterly opaque. I couldn't immediately see how it worked, and since Copilot autocompletes most of my code for me - whether I want to or not, I figured it was a good bit of practice to decompress and understand. First things first: snooze the little copilot bastard for an hour!
FFConf 2026 is live: Things I Learnt
22 juin 2026
As with each year for the FFConf web site, I have a distinct idea of the visual style I want. It has zero to do with the content we're presenting each year, but I do love how FFConf's site can be creative. It was like that from the very first web site - the logo was designed in early 2009 in 12 variations (which you can see from years 2009, 2010 and 2011 before they were really redesigned). Before I (inevitably) forget, it made sense for me to write up some of the things I learnt along the way now that the 2026 web site is live.
20 Years of Blogging
17 juin 2026
Today is the anniversary of the first blog post on this website from two decades ago. It was about client side JavaScript to automatically (albeit blindly) select the "active" navigation. Ironically, I'd probably do this on the server side these days. Admittedly, it's imported from my prior blog and the first time I posted on on this domain was in September, but the post in June counts! But then, my domain was registered a full year before on 13 June 2005 (which neither myself, nor the Internet Archive can remember what was on it!).
How I foot-gunned our newsletter this week
05 juin 2026
For the second year running, as part of our "stay sane" strategy for FFConf, Julie and I write and send a weekly newsletter. It's structured the same way so it means we have a much better line of sight as to what we have to say. The open rate is usually around 40% (though I know some email systems synthetically do this), but our click rates are also usually pretty good. This week however, open rate was 3% and click rate was just 8 clicks. Something was definitely…afoot.
The 30 year game
17 mai 2026
Today I'm releasing my Game Boy game called Marbles² (or Marbles Squared). It's a port of a game that I originally wrote back in 2002, but is a game that started in my life in (or around) 1996. The development this iteration of the game, the one in 2026, took me about a week and I haven't written a single line of code. Here's how things have changed.
A popover backdrop anti-pattern
08 mai 2026
After attending recent conferences and learning that I can swap out buckets of JavaScript for the HTML native popover property, I've been using it liberally throughout my own projects. For little pop out menus it's perfect. Then I also started using it for modal boxes (yes, you might be thinking ahead of me: dialog, still, let's find out what happened). The popover property was really easy for this, and the ::backdrop selector was perfect for adding a little backdrop blur to tell my user "this is the thing you're dealing with". I especially love that all the UX around dismissing is handled for me. I can hit the escape key, or click outside the popover and it's dismissed. Except, I kept noticing that when I dismissed my popover it would sometimes vanish then immediately pop back to life…
This is a literal TIL but was so handy I had to put it my blog so that I wouldn't forget it later. Thanks to Big Brain Keith Cirkel for sharing this. As (hopefully) you know, there's the $ and $$ functions in devtools. For querySelector and querySelectorAll respectively. Well there's also $$$ to query through the shadow DOM. This means the query will cut through and into the nested DOM inside of the shadow DOM making it much easier to navigate and search for elements when debugging or styling. Begs the question: what's going to be lurking inside of $$$$ in 5 years time!
Apps I use, that you might not know
27 avril 2026
This is a cheap post to share some of the apps (macos, sorry Windows users) that I use on a fairly regular basis and think some of you might not have heard of before (whilst still being useful).
Fixing my slow Mac network speeds
26 mars 2026
For a while now both my desktop Mac (running Sonoma) and my laptop (running Tahoe - do not recommend) have had sub-optimal network speeds. My Android phone, on our network, on the same SSID, speed tests at 1.1Gbps. My laptop gets around 160Mbps and my desktop pulls in around 80Mbps. That's quite a difference, and even though I don't need the gigabit speeds - sometimes I can tell when the desktop is being slow (web site be getting big). What was weird is that the network speeds get much faster if I add something like NordVPN to my connection…which doesn't make sense…
Web of State of the Browser Day Out
18 mars 2026
Okay, that's a stupidly obscure title. It's meant to represent the combined events: State of the Browser and Web Day Out - two events I attended in the last month. The short version is: if you get the chance to attend these events or even anything similar, I'd highly recommend that you grab that ticket and let the event wash over you. For those that didn't attend (or maybe you did and wanted to read my perspective) then here's my thoughts on the separate events and then the round up of my own experience.
git recent: what branch did I work on?
12 février 2026
Mega short blog post, mostly for me to remember, but also might be useful to you. In a project I'll often work on and move around different branches throughout the day, and as the years wear on it's rather dulled my memory - that's to say, I quickly forget what branch I was working on!
JS Bin down in 2026
02 février 2026
January 27th I got an email notification saying that JS Bin had become unavailable. Then next day real life human beings were asking what's going on. By 11pm on the 30th the last of the issues were resolved. Earlier today Jake asked me: what went wrong? Fucking, everything.
Bytes I can delete after all this time
13 janvier 2026
For the last few years my work-work has mostly focused on back end software (particularly around APIs). This meant that any front end work I was doing was for myself. Being an long-in-the-tooth old dog, I tend to learn and trick, and roll it out again and again typically without taking the time to find whether I still need the trick. Case and point, I learnt about the JavaScript performance trick of ~~1.4 === 1 to floor a value (and the same float | 0) but really these days it's not "faster" than doing it the legible way (i.e. Math.floor(1.4)). Given I've had a bit of time away from the backend, here's an unorganised list of things I've found I can use, and thusly remove extra code that I no longer need.
Books I read in 2025
01 janvier 2026
This post is mostly data driven (from my own web site's data) to give me a sense of the quality of the books I've read, otherwise individual reviews are all linked in this post or available on my books page. Longest book: Butter - 464 pages Shortest book: The Time Machine - 80 pages Quickest read: 3 days - The Radleys by Matt Haig (336 pages) Longest read/slog: 2 months each Butter by Asako Yuzuki (464 pages) Empire of AI: Dreams and Nightmares in Sam Altman's OpenAI by Karen Hao (496 pages) The Left Hand of Darkness by Ursula K. Le Guin (290 pages) Diversity of authors: Women: 9 Men: 5 Rated books 5 stars Minority Rule: Adventures in the Culture War - 319 pages 4 stars Empire of AI: Dreams and Nightmares in Sam Altman's OpenAI - 496 pages In Bloom - 432 pages Sweetpea - 368 pages The Radleys - 336 pages The Man Who Died Twice - 422 pages The Echo Wife - 240 pages Books by decade 1890 1895: The Time Machine by H.G. Wells 1960 1969: The Left Hand of Darkness by Ursula K. Le Guin 2010 2010: The Radleys by Matt Haig 2015: Sweetpea by C.J. Skuse 2018: In Bloom by C.J. Skuse 2019: Reasons to Be Cheerful by Nina Stibbe 2020 2020: Butter by Asako Yuzuki 2020: The Man Who Died Twice by Richard Osman 2021: The Echo Wife by Sarah Gailey 2022: The Satsuma Complex by Bob Mortimer 2022: Spike Milligan: Man of Letters by Spike Milligan 2023: Making a Killing by Cara Hunter 2024: Empire of AI: Dreams and Nightmares in Sam Altman's OpenAI by Karen Hao 2025: Minority Rule: Adventures in the Culture War by Ash Sarkar
My 2025
31 décembre 2025
I've been doing these posts ending my years, aiming to publish on the 31st, so I'm pleased that I've managed to get this post out the door. Mostly for my own reading, but perhaps yours too.
An opportunity to learn: Advent of Code
03 décembre 2025
I've written about Advent of Code in the past, but that was 5 years ago, so this warrants a new post, and there's an extra opportunity, I think.