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.

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

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

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.

Ankur Sethi@ankursethi.com · 2mo ago

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.

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.

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.

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.

Ankur Sethi@ankursethi.com · 2mo ago

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!