Sandro
sandroroth.com
Sandro
@sandroroth.com
Software Developer based in Switzerland 🇨🇭

🔗 sandroroth.com
🔗 tinytip.co
VSCode supports inlay hints for that (but I'm not a fan of them):

`"javascript.inlayHints.parameterNames.enabled": "all"`
November 5, 2025 at 4:15 PM
Just migrate to Vitest Browser Mode 😉
October 30, 2025 at 4:56 PM
How is this measured? For me (iOS 16 / iPhone 8) it shows a total app startup time of 1.3s, but if I record the screen and check the time it's actually 2.5s (from iOS app-icon-zoom animation completed - "New Tab" page is visible).
October 22, 2025 at 6:09 PM
Yes, maybe. We'll see it when it's released.
October 13, 2025 at 4:57 PM
Not sure how this would work with Parent and Child being in different files. We'll end up with circular dependencies.

And if we see context as a kind of dependency injection, I don't really care *where* the context is coming from, so binding it to a specific component doesn't feel right.
October 12, 2025 at 12:38 PM
We use errors for critical things/potential bugs (e.g. button without type attribute) and warnings for things that that are okay while coding (e.g. debugger statement). Both need to be fixed before merging (max-warnings=0). Just looks a bit nicer with the different colors in the IDE.
October 10, 2025 at 4:17 AM
yep, so weird 🤯
October 2, 2025 at 4:04 PM
> If an attribute name is not a valid JS identifier (like a data-* attribute), it is not considered to be an error if it is not found in the element attributes type.

It's not even typed as `any`, JSX just allows them without type-checking 😕
Documentation - JSX
Using JSX with TypeScript
www.typescriptlang.org
October 2, 2025 at 3:13 PM
Here's the code
Type-Level Hangman in TypeScript | Sandro Roth
Implementing a Hangman game entirely at the type level using TypeScript’s type system.
sandroroth.com
August 24, 2025 at 7:10 AM
Lucky you - we use a component library that often re-creates DOM elements when unstable values or callbacks are passed in 🤷‍♂️ 😢
July 28, 2025 at 6:36 PM
Isn't that expected as Recoil is no longer maintained?
July 19, 2025 at 1:58 PM
> Reproduction: I'm not lying

😂
July 14, 2025 at 3:56 PM
I don't have many email newsletters and just keep them in Readwise Reader. What's your workflow? Maybe you can use Kill the Newsletter.
Kill the Newsletter!
Convert email newsletters into Atom feeds
kill-the-newsletter.com
June 7, 2025 at 8:05 AM
Here we go 🥳
Finally found a way to archive interesting blog posts.

From RSS into Readwise Reader → Download via Reader API → Extract content as Markdown → Create Markdown file with Frontmatter → Move into Obsidian Vault → Create table with Obsidian Base 🚀
May 25, 2025 at 6:11 PM
I'm struggling a lot with that 🤔 I use Readwise for RSS and email, but it’s not great for code-heavy articles or long-term bookmarking. Raindrop is good for bookmarks but lacks RSS/email. Obsidian + Clipper sounds nice for archiving, but syncing from Readwise is manual (and I'm lazy).
May 23, 2025 at 7:56 PM
You can already display properties 🤨
May 22, 2025 at 6:02 PM
Nice setup 👍 We use Vitest + happy-dom but we'll evaluate Vitest's browser mode when it's stable.

We have units tests for transition-heavy machines that are not fully covered by UI tests. UI tests give as much more confidence, they test everything together (just API request are mocked).
May 2, 2025 at 4:27 AM