Writing a Vite plugin to add lazyloaded critical CSS fallbacks for users with JavaScript disabled or unavailable
I'm using a Netlify build plugin to automatically split out and inline critical CSS for my personal...
Hi 👋, welcome to my personal site. It’s part blog, part portfolio, part place to try new things.
I'm a lead frontend engineer at the Co-op. I have a wide range of skills, knowledge, and experience, particularly focussed on accessibility and frontend web performance. Outside of work I'm interested in science, the environment, bouldering, bikes (everyday/utility), and open source software.
Tweets from Twitter, blog posts from DEV/Medium, talks from YouTube and beyond, photos from Instagram, music from Spotify, and nice places from Foursquare (lol, I know, but I've built the API integration now so Foursquare lives on on this website!).
Blog posts I've posted on DEV Community or Medium (one day I'll build my own blog, I promise…)
Some things I've been reading recently:
It is tempting to build abstractions so developers have to do less and build more. However, this can
I’ve been thinking a lot recently about Single-Page Apps (SPAs) and Multi-Page Apps (MPAs). I’ve bee
Understand the core problems state management libraries need to solve. And how the proliferation of
We are getting solar panels on our roof. Someday. We signed a contract last November and the origina
Feature Flags can be categorized into several buckets; manage each appropriately. Smart implementati
There are 7 more of these. I thought I'd save you some scrolling, but if you want you can…
From 2-way data binding to standard libraries to Web Components: A tribute to the innovations of the
A website might use fluid typography with the CSS clamp() function and viewport units. See “Fluid ty
Applying modern CSS techniques to align the start position of a horizontal scrolling gallery to a pa
There’s a feeling in the air. A zeitgeist. SPAs are no longer the cool kids they once were 10 years
When defining a proper color palette for the design system I was working on, I came across the “Dark
Retreating to classic navigation may be cowardice, but it’s INFORMED cowardice
Changing the organisation — to build the technology right
Talks I've given at conferences or other events. I'll link to slides or videos where they are available.
According to the Spotify API, I've been listening to a bit of indietronica (Caroline Polachek), anthem emo (State Champs), oxford indie (Foals), acoustic punk (Beans on Toast), english indie rock (Asylums) and alternative hip hop (Gorillaz) over the last few weeks (their genre names, not mine!)
You can click the cards above to play a little preview of the artist, courtesy of the Spotify API. I also use the Spotify API to get the tempo/BPM of the preview song, and I use this to influence the speed that a card bops at while its playing.
Press the pause icon or the esc key on your keyboard to stop the previews.
Tweets by me, @philw_.
Nice article on state management in React and how it's changed over time: https://frontendmastery.com/posts/the-new-wave-of-react-state-management/ …
We've published our internal test guidance for each Web Content Accessibility Guideline (level AA) as used by our monitoring team: https://github.com/alphagov/wcag-primer/wiki … 🎉 Great work @00selfthinker @kclarkson295 @accessibleweb @streats_ and Katherine! #accessibility #a11y
H&M wrote/translated labels for dynamic values that always assumed a positive integer. Even a negative value would still use the same label and so be printed as '30% less water used' instead of '30% more water'. Perhaps Hanlon's razor rather than greenwashing, but still not good. https://twitter.com/AShendruk/status/1542491697980100609 …
A randomised asortment of places I've liked on Foursquare at one point - it could be somewhere from a holiday, or it could be a random bar in Manchester that closed three years ago…
Get in touch
You can send me a direct message on Twitter or drop me an email via this contact form (all fields are required).