Oh, what a way to start the week 😍 CSS mixins implementation is starting in Chromium, from my team at Microsoft.
Ankur Sethi
@ankursethi.com
Writer, independent frontend developer, computer gremlin. Long-form writing on ankursethi.com. I run blr.indiewebclub.org with abhinavsarkar.net and tanvibhakta.in.
The first part of Declarative Partial Updates (`<template for>` out-of-order HTML) is now available, unflagged, in Chrome 150!! developer.chrome.com/release-note... The second part (the new JS setting APIs, include the streaming ones) we're still working on the spec side, but maybe for Chrome 152?
Chrome 150 | Release notes | Chrome for Developers
CSS text-fit property, background-clip border-area, Focusgroup, and more.
developer.chrome.com
Doesn’t matter what it is, please tell me honestly, how much money do you spend per month on your main hobby? I’m working on a talk and I’m curious to get a wild figure. Feel free to reply, DM or email me. 100% no judgement, just amateur data research. Boost for reach please 💖
From the React docs: > In React, it’s conventional to use onSomething names for props which represent events and handleSomething for the function definitions which handle those events. Ten years of writing React, and I've never used this convention! I name BOTH my props and handlers `onSomething`.
PDAs were a thing that existed for a period and were some of the first mobile methods of accessing the full-fat World Wide Web. After digging through a lot of old press releases and archival material, here is my latest article, covering web browsers on PDAs: vale.rocks/posts/pda-br...
Web Browsers on PDAs
A history of internet web browsers on personal digital assistant devices and operating systems, including EPOC, Apple Newton, Palm OS, and Windows Mobile (Pocket PC). From small, bespoke browsers with unique features to large mainstream browsers with PDA presence.
vale.rocks
I put Fedora on a janky old ASUS gaming laptop my brother gave me, and everything just...worked. Outside of Nvidia drivers, I didn't have to do anything special to make this computer compute. And 90% of my Steam library is compatible with Linux/Proton. I'm going to play SO MUCH Two Point Hospital 😅
We’re considering it! developer.chrome.com/blog/declara... But client-side includes are gonna have a perf cost for that extra fetch for so aren’t great for critical, above-the-fold content. So I hope it doesn’t become a step back of DX > UX if it is introduced!
Declarative partial updates | Blog | Chrome for Developers
Learn about new out-of-order streaming capabilities and the renewed HTML insertion and streaming methods available for testing from Chrome 148
developer.chrome.com
According to this page, Firefox on iOS will soon have a built-in ad-blocker. I'm so happy! I've been waiting for this feature for what seems like a decade at this point. www.firefox.com/en-US/whatsn...
See what's next for Firefox
See and shape what’s next for Firefox.
firefox.com
Well done article via @cassidoo.co’s newsletter this morning. I’ve pushed clients to remove those stupid share buttons for years, nice to have some metrics to back up my assumptions.
Nobody clicks your share buttons
I don’t click share buttons. I never have. When I find something worth sharing, I tap the share icon in Chrome on my phone. That’s it. On my desktop I click the little link icon in Arc&…
derekhanson.blog
Announcing feed-repeat v1.1: Hosting on GitHub Pages, New Posts Passthrough, SSRF Protection, and More https://abhinavsarkar.net/notes/2026-feed-repeat-v1_1/ #feeds #RSS #Haskell #selfHosting #release
feed-repeat v1.1: Hosting on GitHub Pages, New Posts Passthrough, SSRF Protection, and More
feed-repeat is a small tool that selects old posts from RSS/Atom feeds you configure and puts them into a new Atom feed. Use it with your feed reader for a spaced-repetition-like experience for blog posts. See the announcement post for the motivation behind it, and more details. I just released v1.1 of feed-repeat. This release brings some great new features, and improves the security and performance. The biggest highlight: **you can now run feed-repeat entirely on GitHub** , no server needed! The repo now includes a GitHub Actions workflow that runs feed-repeat daily, and publishes the generated feeds to GitHub Pages. Getting started is simple: fork the repo, edit `config.yaml` with your source feeds, enable the workflow, enable GitHub Pages, and subscribe to the generated feeds in your feed reader. That’s it! The documentation has the full step-by-step guide. **Passthrough of new entries** : The new `passthroughNewEntries` option passes new entries from a source feed directly to the output feed, turning it into a combined feed of old repeats and new content, so that you can subscribe to only one feed for both old and new posts. **Authenticated feeds** : URL credentials in source feeds (e.g., `https://token@host/feed`) were previously stripped before sending the HTTP request, breaking authentication for password-protected feeds. This is now fixed — the original URL is preserved as-is, enabling feed-repeat to subscribe to private feeds. **SSRF protection** : feed-repeat now validates DNS resolution and IP ranges before connecting to source feed URLs, preventing server-side request forgery attacks. **Persistent conditional fetches** : `ETag` and `Last-Modified` headers from source feeds are now persisted to the cache between runs. This means feed-repeat only downloads a feed when it has actually changed, reducing bandwidth and processing time, and load on feed servers. **Other notable changes** : The HTTP retry for 5xx errors was fixed — they are now properly retried with exponential backoff. feed-repeat now also handles HTTP 429 responses gracefully, redacts credentials from all log output, deduplicates source feed fetches across tasks, uses per-task cache files (migrated automatically), and supports a configurable `User-Agent` via `--user-agent`. **Minimum GHC version bumped** : feed-repeat now requires GHC 9.10+, dropping support for GHC 9.6 and 9.8. See the full changelog for all the details. If you have any questions or comments, please leave a comment below. If you liked this post, please share it. Thanks for reading!
abhinavsarkar.net
YES, Dark Mode Toggles _should_ be a browser feature. I wrote about this before: brm.us/dark-mode-ov... Find the link to the Chrome Bug in the post, and hit the star next to it to "upvote" the bug. (I even have a prototype extension to provide this for you: brm.us/chrome-dark-...) #cssday
Dark Mode Toggles Should be a Browser Feature
When implementing Dark Mode and ways to toggle it, developers currently need to duplicate code and roll their own toggle implementation. What if, instead, browsers would take care of all that?
brm.us
New linkblog post: ankursethi.com/links/so-you... Turns out writing a brand-new GUI framework takes a bit of effort.
So you want to write a GUI framework — Ankur Sethi's Internet Website
ankursethi.com
If your code comment contains only a single sentence, do you still end it with a period? Or do you just let it hang there, periodless? That is, do you prefer to write this: // Do this thing because of the other thing Or this: // Do this thing because of the other thing.
Whoops, I was wrong about this. Zed has its own implementation of project search that lives in this crate: github.com/zed-industri... (see `search.rs` and `project_search.rs`). I guess I believed if VSCode used ripgrep then probably Zed did too? My bad.
So @zed.dev uses ripgrep for project search, but it doesn't let you modify the CLI flags it passes to ripgrep. Today I was looking for a string in a .gitignored directory. Zed returned no results and gave no explanation. I had to manually run ripgrep with the --no-ignore flag to see any results.
Paulo Andrade on building native Mac apps using SwiftUI. From the post: > If you want the TL;DR: we're not there yet. Apple really messed up the AppKit → SwiftUI transition. What do you mean I have to learn BOTH AppKit and SwiftUI to build an app?! ankursethi.com/links/using-...
Using SwiftUI to Build a Mac-assed App in 2026 — Ankur Sethi's Internet Website
ankursethi.com
So @zed.dev uses ripgrep for project search, but it doesn't let you modify the CLI flags it passes to ripgrep. Today I was looking for a string in a .gitignored directory. Zed returned no results and gave no explanation. I had to manually run ripgrep with the --no-ignore flag to see any results.
I just quit iTerm to install an update while Homebrew was updating packages in one of my tabs. After the restart, the Homebrew process just…continued right along? Like I hadn't quit the terminal at all? Is this an iTerm feature? Does it keep processes alive in the event of a restart?
Huh. I thought putting my website behind @cloudflare.social would automatically ensure all my pages were served from Cloudflare's cache. But they aren't? Turns out Cloudflare doesn't cache any HTML by default. You have to manually add caching rules to make that happen.
Also, what happens if I change my website's main feed from RSS to Atom. Will it break feed readers that have already subscribed to the feed? Do I dare try? (No, I do not dare try. But I would like to know the answer nonetheless.)
TIL you can't add a global "author" field to an RSS feed. Instead, you attach author information to individual <item>s in the feed. Seems wasteful for single-author blogs? The spec does allow for "managingEditor" and "webMaster" fields, but those don't really represent authors of the text.
TIL you can't add a global "author" field to an RSS feed. Instead, you attach author information to individual <item>s in the feed. Seems wasteful for single-author blogs? The spec does allow for "managingEditor" and "webMaster" fields, but those don't really represent authors of the text.
IndieWebClub Bangalore celebrated its first birthday on 24 May! To mark the occasion, we hosted a mini conference on 30 May where we invited members from our community to speak. Abhinav wrote about how we ran the miniconf here: abhinavsarkar.net/notes/2026-i... My own post hopefully coming soon 😅
IndieWebClub Bangalore: Special Edition Meetup, Behind the Scenes
IndieWebClub Bangalore: Special Edition Meetup, Behind the Scenes
abhinavsarkar.net
You can also use Cmd + <period> instead of the Esc key in SOME native apps for SOME actions. E.g. you can close pretty much every native menu using this shortcut and most about dialogs. But support is inconsistent, and this 100% doesn't work in non-native apps.
TIL if you're running macOS Tahoe, you can use Ctrl + Return to trigger the right click menu in native macOS apps. The menu target is always the element that has keyboard focus. Useful for triggering common operations that don't have keyboard shortcuts (e.g. autocorrect suggestions in iA Writer).
TIL if you're running macOS Tahoe, you can use Ctrl + Return to trigger the right click menu in native macOS apps. The menu target is always the element that has keyboard focus. Useful for triggering common operations that don't have keyboard shortcuts (e.g. autocorrect suggestions in iA Writer).
A lot of people I follow via RSS seem to have picked Bluesky as their primary social network. And there seems to be a ton of positive energy in general around ATProto. I've been off social media for 2+ years now, but all this excitement is making me want to join in again!
i'm not thrilled about using LLMs to write code. i mean, it's alright? if you're careful and know what you're doing? but i'm pretty excited about using LLMs to *improve* human-written code. especially if you can teach the LLM what bugs, antipatterns, etc to look for. ankursethi.com/links/mythos...
Mythos finds a curl vulnerability — Ankur Sethi's Internet Website
ankursethi.com
this is such a great use for LLMs! i can fully get behind this. the interesting part is that you have to have a ton of domain knowledge to pull this off. you can't vibecode your way into this plugin. ankursethi.com/links/using-...
Using LLMs to find Python C-extension bugs — Ankur Sethi's Internet Website
ankursethi.com
did a little experiment over the past four weeks. i have to admit that coding agents are incredibly effective, even when you go full vibeslop mode. but there's still something deeply uncomfortable about all this. ankursethi.com/blog/program...
I built a programming language using Claude Code — Ankur Sethi's Internet Website
ankursethi.com
ran this little experiment in December where i let a local LLM lose on my personal journal entries. the results were ehhhh. still, there's potential here. might repeat this again in December! ankursethi.com/blog/i-used-...
I used a local LLM to analyze my journal entries — Ankur Sethi's Internet Website
ankursethi.com