Sindre Sorhus

Sindre Sorhus

@sindresorhus.com

Eat, code, love. I make Mac apps and open-source. https://sindresorhus.com/apps Mastodon: https://mastodon.social/@sindresorhus X: https://x.com/sindresorhus

6.7K followers9 following305 posts

iPhone Duo is so unnecessary And it creates so much useless work for developers. There, I said it. It's changing stuff for the sake of it. Same with the upcoming touchscreen MacBook.

Due to AI, I have disabled external pull requests on all my repos. Open source, as we have known it, was fun while it lasted. (It’s been 15 years for me) I will still maintain projects and handle issues.

View full thread

I use AI extensively myself. It simply makes no sense for me to spend time reviewing and going back and forth on a low-quality PR when I can generate, verify, and ship the fix myself 10× faster. This is ultimately about optimizing my time.

Due to AI, I have disabled external pull requests on all my repos. Open source, as we have known it, was fun while it lasted. (It’s been 15 years for me) I will still maintain projects and handle issues.

Don’t get me wrong: this isn’t a dig at AI. The quality of open-source contributions had been declining long before AI. AI just accelerated it, while also making PR spam dramatically worse.

Supercharge recently got some useful tweaks Mute microphone while typing Automatically mutes the microphone input while you're typing and unmutes shortly after you stop. Only activates when the microphone is in use. Useful for video calls with loud keyboards.

Another thing I have been working on for a couple of months: Ink 7 New hooks: usePaste, useWindowSize, useBoxMetrics, useAnimation More props stuff for <Box>: maxWidth/maxHeight, aspectRatio, alignContent, position="static" Ink lets you build CLIs with React github.com/vadimdemedes...

github.comRelease v7.0.0 · vadimdemedes/inkBreaking Require Node.js 22 19b5316 Require React 19.2+ cfaebbb Ink now uses useEffectEvent internally to avoid re-subscribing input handlers on every render Pressing Backspace now correctly ...
View full thread

It has everything you will need: - Retries - Timeouts - HTTP error throwing (non-2xx) - Base URL (resolve relative URLs against a base) - Default headers - Auto token refresh on 401 - Client-side rate limiting - Concurrency limiting - Request deduplication - In-memory caching

View full thread

baseUrl vs prefix `baseUrl` uses standard URL resolution: `/users` means origin-root, `users` means relative to the base path. `prefix` does simple string joining first, so `/users` and `users` both append to the prefix the same way. Use it only when you want that behavior.

```js // baseUrl ky('users', {baseUrl: '/api/'}) //→ /api/users ky('/users', {baseUrl: '/api/'}) //→ /users (leading slash = origin-root) // prefix ky('users', {prefix: '/api'}) //→ /api/users ky('/users', {prefix: '/api'}) //→ /api/users (leading slash ignored) ```

New `baseUrl` option fixes URL handling, `searchParams` option now merges, retries are now more precise by distinguishing failure types, built-in JSON schema validation. Ky is a tiny JS HTTP client built on top of the built-in Fetch.

Get Image URLs from Web Page Get Images from Web Page Get Meta Tags of URL Get Media Metadata Get Raw Media Metadata Convert Text File Encoding Manage Shortcut Lock Overlay Image (Extended) Scan Barcodes in Image Convert Number Base Find Points of Interest Calculate Bearing Parse/Make Markdown Table