I'm building a newer version of my personal site using Astro (wolstenhol-astro.netlify.app). It fetches some reading list items at build time and then some at request time once you start paginating. It looks like each time I fetch the Chrome for Developers blog I'm getting a different language 😁
Phil Wolstenholme
@wolstenhol.me
Lead front-end eng @CoopDigital. Interested in the web (front-end, #a11y, performance), environment, bikes (everyday/utility) and science. @philw_@hachyderm.io
Other than @devongovett.me 's work on React Spectrum/ARIA are there any other good sources on 'how to make nice full screen UI' for iOS 26? I've found some base-ui PRs but are looking for more examples. I've gotta make a full screen mobile nav full-screen again…
I think I finally found a solution to reliably prevent scrolling behind modals on iOS! 😲 Works when tapping inputs, with different keyboard sizes, when the address bar is collapsed or expanded, programmatic focus, dialog scroll animations, etc. Coming soon to React Aria! 🎉
@jensimmons.bsky.social @saron.bsky.social @jondavis.bsky.social – do you know why using this CSS would cause flickering? It's across devices and iOS versions: ``` :where(:root) { --vpc-loader-height: 23.75rem; } content-visibility: auto; contain-intrinsic-size: auto var(--vpc-loader-height); ```
Team size changes, project work, and winter sickness has meant that we're sometimes running as a pair rather than a small mob/ensemble at work. I've never done much pairing! Are there any particularly good blog posts, talks, or books on doing it well and/or different approaches to try?
Neat little feature on my new personal site: use the `Sec-CH-UA-Mobile` header (or UA sniffing 😔) to know the device type during SSR and show fewer items per page. This saves mobile users from having to scroll past giant stacked lists that would be in a nice grid on desktop:
New feature on the redesign of my personal site (wolstenhol.me) – show when its the birthday of a repo I've starred on Github. Happy anniversary for oRPC, @unnoq.com!
I'd almost completely forgotten about a talk I gave in the depths of Covid for DrupalCon EU. I've just found a blog post I wrote (on a Medium account that I'd also forgotten about!) after getting my session feedback back and I'm feeling nostalgic: philwolstenholme.medium.com/my-drupalcon...
My DrupalCon Europe 2020 session feedback
Back in December I gave a talk on using Tailwind with Drupal, and why, for me, it makes sense in an agency environment where long-running…
philwolstenholme.medium.com
This post is the culmination of my thinking about (and building) SPA-like apps w minimal JS for the last 2 yrs The ideas are informed in large part by the @infrequently.org blog posts and talks Thanks @htmx.bsky.social and @astro.build for building great tools. www.lorenstew.art/blog/progres...
A Progressive Complexity Manifesto | Loren Stewart
A manifesto for progressive web complexity. Reject the false binary between static sites and SPAs. Embrace the powerful middle ground with server-rendered HTML, HTMX, and intentional complexity escala...
lorenstew.art
Lodash with imports from `lodash/package`: 151.16kb `es-toolkit`: 3.88kb Tests passing, TS happy, linter happy. There's a bundle size reduction, a speed increase, and we can drop the Lodash ESLint plugin and `@types/lodash` too 🙌 Thanks github.com/toss!
This is a glorious blog post on the history of rendering web pages, how to write a BFF very neatly, returning a representation of UI from a server – and how you might end up inventing React Server Components if you think about these things for long enough:
⚛️📝 New on Overreacted: JSX Over The Wire overreacted.io/jsx-over-the...
Nice article: blog.nelhage.com/post/persona... Some key points: the person knows what they are doing, the LLM is speeding them up, but when there's a hiccup they can get back on track with their own skills, and the software they are generating is only their responsibility to maintain.
Building personal software with Claude
Earlier this month, I used Claude to port (parts of) an Emacs package into Rust, shrinking the execution time by a factor of 1000 or more (in one concrete case: from 90s to about 15ms). This is a vari...
blog.nelhage.com
I blogged about what my testing workflow is like now that I'm one of those developer creatures: cactus-flamingo.ghost.io/a-software-e...
A Software Engineer in Testing: How I Build Quality In
If you're familiar with my journey, you'll know I made the transition to a software engineer role around 6 months ago, after being a QA engineer in various forms for the best part of a decade. Part of...
cactus-flamingo.ghost.io
Locked in
For those on BlueSky unfamiliar with this modern British tradition: During times of high winds, we all jump on YouTube and watch planes trying to land at Heathrow, with excited commentary from the UK's premier plane nerd channel. Currently live here! www.youtube.com/live/egvoBvc...
It's December 1st, and you know what that means: For the next 24 days, we'll publish articles about HTML by 24 authors. You can read them on the website or subscribe to the RSS channel. Enjoy! htmhell.dev/adventcalend...
HTMHell Advent Calendar 2024 - HTMHell
An article, talk, or tool that focuses on HTML every day until Christmas.
htmhell.dev
Absolutely this, Knip probably saves me and my team about twice a week from leaving dead code in the codebase, exporting things that don't need to be exported, forgetting to remove a library from package.json when we stop using it in code – that sort of thing
✂️ knip.dev by @webpro.nl is the best tool to find all unused exports and unused deps. Easy setup 🚀 bun create @knip/config bun add Resolving dependencies Resolved, downloaded and extracted [8] Saved lockfile ✓ Install Knip ✓ Add knip to package.json#scripts ✓ Run "bun run knip" to run knip
Scroll gallery effect using CSS grid and scroll-driven animations ✨ - split images into layers - lay out images in stacked layers with same grid structure - animate the size of the center image - animate the layers to reveal with different timings
I tried moving from Lodash to `es-toolkit/compat` (as a stepping stone) but now it looks like Webpack is pulling in www.npmjs.com/package/buffer and its dependencies (62.93kb!) so my bundle size has _increased_. I think it's github.com/vercel/next.... from @nextjs.org causing mischief 😭 @leerob.com
buffer
Node.js Buffer API, for the browser. Latest version: 6.0.3, last published: 4 years ago. Start using buffer in your project by running `npm i buffer`. There are 9127 other projects in the npm registry...
npmjs.com
🚀 New Interactive Article: Overflow Clip Explore how overflow: clip works in CSS and see why it’s useful with practical examples and demos. 🔗 ishadeed.com/article/over...
Has anyone ever seen Safari render a page correctly (visually/layout speaking) but all the touch tap targets are offset? Only reproducible when Safari has been configured to show the address bar at the top of the screen, and only when a particular style of Flexbox-based modal is open? #frontend
🚨 Introducing the 2024 Web Almanac, our annual "state of the web" report! 🔖 almanac.httparchive.org/en/2024/ 21 chapters (11 publishing today, the rest to follow) 65 contributors for today's chapters (more to follow) 17M websites analyzed 83 TB of data processed 628 queries written
The 2024 Web Almanac
The Web Almanac is an annual state of the web report combining the expertise of the web community with the data and trends of the HTTP Archive.
almanac.httparchive.org
I'm not sold on the colour scheme yet but as of last night wolstenhol.me is now showing Bluesky posts where it used to show Twitter posts 🙌. I just need to post some photos and videos so I can make sure it handles those okay, the old approach used a lightbox for photos and could play videos inline.
If anyone in the UK is looking for a simple but good beans-to-cup coffee machine then this is the one I've had for three years now, and £399 is a great price! www.techradar.com/home/coffee-...
I test coffee machines for a living, and this Smeg espresso machine is the best Black Friday deal I've seen so far
With £300 off, this is the cheapest this bean-to-cup machine has ever been
techradar.com
I'm sick, which obviously means it's time to rebuild wolstenhol.me in Astro, mainly just because my current site won't build anymore due to hitting the max environment variables size limit on AWS/Netlify Functions… I should probably just try and fix that first, right?
Phil Wolstenholme's personal website, blog and portfolio
Phil Wolstenholme's personal site
wolstenhol.me
This may be helpful for you new followers. You can block every single person on these lists. Just click on the subscribe button and it will give you the option to block every one on it. Here’s the first: bsky.app/profile/did:...
I just spent way too long adding every guest to a Syntax starter pack If you want to follow the best devs in web development 👇🏻 go.bsky.app/SoASbQA
✂️ Support the mission to automate code maintenance and make it more fun by nominating Knip! Eternal gratitude will come your way uncluttered 🫶 syntax.fm/oss
$50,000 for Open Source - Syntax
Syntax is Pledging $50,000 to open source projects.
syntax.fm
This is very very cool, a native feeling swipe-to-dismiss modal sheet but all with CSS and a touch of JavaScript, not a Framer Motion in sight! codepen.io/jh3y/pen/LYw...
just a drawer a Popover using CSS scroll-snap and scroll-driven animation to give you drag gestures for free on touch devices 🤙 scrollsnapchange to trigger close 🚀 scroller.addEventListener('scrollsnapchange', () => { if (scroller.scrollTop === 0) drawer.hidePopover() }) watch the trick 🤙
Made a cute bit of UI to switch between Adobe Target A/B test experiences in server-side rendered HTML. It's all managed with React Server Components and API calls to save us having to load a tonne of Adobe's third party JavaScript and still suffer layout shift and flicker.